繁体   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