2016-01-20 46 views
-1

在我的Java应用程序部署在Tomcat中,约500K的项目(可以去甚至向上)是 添加到ArrayList中。 然后,这些列表被重复检查一些条件。性能 - 数据量 - ArrayList中<String>,列表<Object> VS LinkedList的<String>,LinkedList的<Object>

Que-对于这种情况,会使用LinkedList获得性能吗?

从实际经验的任何指针的数据量超过20万项〜100万项。

大多具有多个属性大多是串 (基本上从数据库获取数据,将其转换为Java对象,并通过HTTP发送过来) 如果数据的规模有望保持内100K以下,将字符串和对象的列表会有差异

+0

你的问题还不清楚:你问一个List(它是一个接口)和一个LinkedList(这是一个实现)之间的区别。 – Filip

+1

简而言之:'ArrayList'上的常量因素非常好,'LinkedList'几乎不是正确的答案。 –

+0

谢谢Louis。在发布我的问题之前,我完全查看了其他问题。我不确定是否有人分享了我对感兴趣的数据量的实际生产数据的经验,因此也提出了问题。我想你不喜欢它,并决定downvote!如果这完全没用,我可以解决这个问题。 – Rockoder

回答

0

见这样的问题: When to use LinkedList over ArrayList?

链表允许使用 迭代器,但只有元件的顺序访问常数时间插入或移除。换句话说, 可以向前或向后移动列表,但在 列表中查找位置所花费的时间与列表大小成比例。

另一方面,ArrayList允许快速随机读取访问,因此您可以在常量时间内抓取任何元素。但是,除了最终的地方之外,在任何地方添加或移除 都需要将所有后面的元素移位,以打开或填补缺口。另外,如果您添加的元素数多于底层数组的容量,则会分配一个新阵列(大小的1.5 倍),并将旧阵列复制到新阵列中,因此向ArrayList添加O(n )在最坏的情况下,但平均为 。

+0

感谢您的回答。我正在寻找一些实际经验来估计添加/检索我提到的数据量所需的时间。我在我的代码中估算了arraylist,但是在更新代码之前,重新测试了所有内容,想到问这个问题。对于与此主题相关的其他问题的答案,有人提到如果不删除/修改列表,链接列表可能会更快。这让我感到震惊! – Rockoder

相关问题