当前位置: 首页 > 知识库问答 >
问题:

ArrayList和LinkedList之间的性能差异

盖和洽
2023-03-14

是的,这是一个老话题,但我还是有些困惑。

在爪哇,人们说:

List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.remove("b");
System.out.println(list.get(1)); //output "c"

LinkedList的插入速度比ArrayList快。这里插入是什么意思?如果这意味着向后移动一些元素,然后将元素放在中间的空点,那么ArrayList应该比LinkedList慢。如果插入只意味着添加(对象)操作,这怎么会慢呢?

共有1个答案

阮梓
2023-03-14

如果随机访问ArrayList的元素,ArrayList比LinkedList快。我认为随机存取意味着“给我第N个元素”。为什么ArrayList更快?

ArrayList直接引用列表中的每个元素,因此可以在恒定时间内获得第n个元素。LinkedList必须从头遍历列表,才能找到第n个元素。

LinkedList的删除速度比ArrayList快。我明白这个。ArrayList的速度较慢,因为需要重新分配内部备份数组。

ArrayList速度较慢,因为它需要复制部分数组以删除空闲的插槽。如果删除是使用listiterator.remove()API完成的,LinkedList只需操作几个引用;如果删除是通过值或索引完成的,LinkedList可能必须首先扫描整个列表以查找要删除的元素。

如果这意味着向后移动一些元素,然后将元素放在中间的空点,那么ArrayList应该会慢一些。

对,就是这个意思。ArrayList确实比LinkedList慢,因为它必须在数组中间释放一个插槽。这包括移动一些引用,在最坏的情况下重新分配整个数组。LinkedList只需操作一些引用。

 类似资料:
  • 是的,这是一个老话题,但我仍然有一些困惑。 在Java,人们说: > 如果我随机访问它的元素,ArrayList比LinkedList快。我认为随机存取意味着“给我第n个元素”。为什么ArrayList更快? LinkedList的删除速度比ArrayList快。我理解这一点。ArrayList速度较慢,因为需要重新分配内部备份阵列。代码说明: LinkedList的插入速度比ArrayList快

  • 可能重复: 何时使用LinkedList 我应该什么时候使用arrayList,什么时候使用LinkedList? 什么时候应该使用,和?

  • 问题内容: 我正在计算稀疏自动编码器的算法。我已经使用和在python中实现了它。代码几乎相同,但是性能却大不相同。matlab完成任务所需的时间为0.252454秒,而numpy为0.973672151566,几乎是原来的四倍。在最小化问题中,我将在以后多次调用此代码,因此这种差异会导致实现之间的延迟几分钟。这是正常行为吗?如何提高numpy的性能? numpy实现: Sparse.rho是调整

  • 本文向大家介绍阐述ArrayList、Vector、LinkedList的存储性能和特性相关面试题,主要包含被问及阐述ArrayList、Vector、LinkedList的存储性能和特性时的应答技巧和注意事项,需要的朋友参考一下 考察点:ArrayList ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,

  • 我想知道使用子句和之间的性能差异。我从他们两个那里得到了不同的时间。假设我有10个组,我想让一个用户可以访问5个组,同时排除5个组。因此,我有两种使用查询的方式: 我可以在布尔查询中使用子句,并执行。我可以再次在布尔查询中使用子句,并执行。 我在这里没有提供很多细节,因为我只是想更多地了解使用这两个术语的性能差异。我在ES文档中读到了Boolean查询,它说在子句中忽略评分,尽管我还不明白在Luc

  • 我是Java和静态编程语言的新手。 最近当我在学习静态编程语言的时候读了一个教程。 我发现有一些让我困惑。 、和