【问题标题】:Java :: Is LinkedList really Faster for Insertion than ArrayList? [duplicate]Java :: LinkedList 的插入速度真的比 ArrayList 快吗? [复制]
【发布时间】:2018-09-28 04:51:18
【问题描述】:

我观察到与LinkedList 相比,ArrayList 中的插入操作花费的时间更少(以毫秒为单位)。请对此有所了解。

这是我的测试代码

List<String> strLnkdList = new LinkedList<String>();

long start1 = System.currentTimeMillis();
for(int i=0;i<10000;i++){
    strLnkdList.add("Test"+i);
}
long end1 = System.currentTimeMillis();
System.out.println("LinkedList Time in millis: " + (end1-start1));

List<String> strArrayList = new ArrayList<String>(10);

start1 = System.currentTimeMillis();
for(int i=0;i<10000;i++){
    strArrayList.add("Test"+i);
}

end1 = System.currentTimeMillis();
System.out.println("ArrayList Time in millis: " + (end1-start1));

输出:

LinkedList Time in millis: 22
ArrayList Time in millis: 10

【问题讨论】:

  • 是的,现在尝试在列表中添加一些东西,而不是添加新元素。在那之前你也进行过试跑吗?
  • 我记得在某处读到过,在实践中,ArrayList 几乎总是优于 LinkedList,即使您认为它会更慢。
  • @AndyTurner 怎么是重复的?
  • @Antoniossss 正如你所建议的那样,我尝试了容量为 10000 并且输出仍然相同,即 LinkedList 时间(毫秒):37 ArrayList 时间(毫秒):16
  • @Antoniossss 现在我尝试在两者中追加或插入更多内容。这次“LinkedList”赢了:) 即 ArrayList_2 以毫秒为单位的时间:34 .... LinkedList_2 以毫秒为单位的时间:4 ...谢谢

标签: java arraylist linked-list insertion


【解决方案1】:

链表只需要更改将要删除的节点的两个相邻节点(元素)中的指针位置。

ArrayList 中的所有元素都需要移动来填充被移除元素创建的空间。

有些人想像一个积木塔让阵列缩短 1 格,您必须将其拉出,然后将每个格子向下移动 1 格

对于链表,就像你有一个字符串持有一个块,你只是把它剪掉

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2021-12-19
    • 2013-04-18
    • 2019-04-30
    • 2020-05-26
    相关资源
    最近更新 更多