Java中的什麼比ArrayList<String>
更快?我有一個未定義長度的列表。 (有時4件,有時100件)。Java/Android什麼比ArrayList更快?
什麼是最快速的方式添加並從任何列表中獲取? arrayList.add(string)
和get()
非常緩慢。
有沒有更好的方法呢? (string s[]
然後copyArray
是最慢的?)
Java中的什麼比ArrayList<String>
更快?我有一個未定義長度的列表。 (有時4件,有時100件)。Java/Android什麼比ArrayList更快?
什麼是最快速的方式添加並從任何列表中獲取? arrayList.add(string)
和get()
非常緩慢。
有沒有更好的方法呢? (string s[]
然後copyArray
是最慢的?)
更快爲什麼?
「基本上arraylistist.add(string)和get()非常慢。」 - 基於什麼證據?和什麼相比? (這裏不需要'基本'這個詞 - 這是一個高科技的「嗯」)。我懷疑ArrayList是你的應用程序的問題。分析你的代碼是判斷你是否只是猜測和抓住吸管的唯一方法。
即使是O(n^2)的算法,如果數據集很小,可能也足夠了。
您必須瞭解不同數據結構的Big-Oh行爲才能回答此問題。添加到ArrayList的末尾非常快,除非您必須調整它的大小。在中間添加可能需要更長的時間。
LinkedList在中間添加會更快,但您必須迭代才能到達特定元素。
這是最後appenden這是非常緩慢的。我等了很長時間(幾秒鐘)來追加短數量的100個整數。那真的很慢。 – user1324936
你已經等了六個月的評論?我想我已經用我的答案覆蓋了它。看到關於「除非你必須調整它」的部分?也許你需要考慮你的初始規模和調整行爲。 – duffymo
嘗試使用哈希表它快得多
兩個add()
結束列表和get()
應在O(1)運行。由於長度未定義,因此不能使用固定長度的數組。恐怕你無法做得更好。
add(int index, E element)
需要線性時間的最壞情況,但如果這就是爲什麼你認爲它很慢。如果是這種情況,可以使用Hashtable(插入需要一定的時間)或TreeMap(插入需要對數時間)。
您可以使用javolution庫。 http://javolution.org
http://javolution.org/target/site/apidocs/javolution/util/FastList.html
比ArrayList的IST更快;)
看一看的Jodd Utilities。他們有一些實現ArrayList但是在primatives(jodd/util/collection /)上的集合,比如IntArrayList。所以如果你正在創建一個int,float,double等ArrayList,它會更快,消耗更少的內存。
速度甚至比這就是他們所謂的FastBuffer,(),它擅長的附加,可以在澳提供一個get()(1)。
這些類幾乎沒有相互依賴性,所以很容易將您需要的類放入代碼中。
100個項目不是很多。你的瓶頸在別處。
我想沒有比插入和檢索通過索引數組列表更快的方式。 –