[英]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.