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