簡體   English   中英

Java / Android比ArrayList快什么?

[英]Java /Android what is faster than ArrayList?

什么比Java中的ArrayList<String>快? 我有一個未定義長度的列表。 (有時4個項目,有時100個)。

從任何列表添加和獲取它的最快方法是什么? arrayList.add(string)get()非常慢。

有更好的方法嗎? string s[]然后是copyArray最慢?)

為了什么更快?

“基本上arraylist.add(string)和get()非常慢。” -根據什么證據? 和什么相比? (這里不需要“基本”一詞-它是高科技的“ um”。)我懷疑ArrayList是應用程序的問題。 對代碼進行概要分析是告訴您是否只是在猜測和掌握的唯一方法。

如果數據集很小,那么即使是O(n ^ 2)的算法也足夠了。

您必須了解不同數據結構的Big-Oh行為才能回答此問題。 除非必須調整其大小,否則添加到ArrayList的末尾非常快。 在中間添加可能需要更長的時間。

在中間添加LinkedList會更快,但是您必須迭代才能到達特定元素。

100件不是很多。 您的瓶頸在別處。

add()到列表末尾和get()都應在O(1)中運行。 而且由於長度是不確定的,因此不能使用固定長度的數組。 恐怕您無法做得更好。

add(int index, E element)在最壞的情況下需要線性時間,但是如果這就是為什么您認為它很慢。 如果是這種情況,請使用Hashtable(插入需要固定時間)或TreeMap(插入需要對數時間)。

看看Jodd實用程序 他們有一些實現ArrayList的集合,但這些集合在基元(jodd / util / collection /)上實現,例如IntArrayList。 因此,如果您要創建一個由int,float,double等組成的ArrayList,它將更快並且消耗更少的內存。

他們稱之為FastBuffer的速度甚至更快,它擅長add()並可以在O(1)提供get()。

這些類之間幾乎沒有相互依賴性,因此很容易將所需的類放入代碼中。

您可以使用javolution庫。 http://javolution.org

http://javolution.org/target/site/apidocs/javolution/util/FastList.html

ist比arraylist快得多;)

嘗試使用哈希表會更快

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM