迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中 LinkedList 与 ArrayList 的区别?

作者:迹忆客 最近更新:2023/02/04 浏览次数:

LinkedListArrayList 都实现了 List 接口,但它们在内部的工作方式是不同之处。 ArrayListLinkedList 之间的主要区别在于 ArrayList 使用可调整大小的数组实现,而 LinkedList 使用双重 LinkedList 实现。 ArrayList 在 Java 程序员中比 LinkedList 更受欢迎,因为在很少情况下 LinkedList 是比 ArrayList 更合适的集合。 在本文中,我们将看到 LinkedList 和 ArrayList 之间的一些差异,并尝试找出 何时何地使用 LinkedList 而不是 ArrayList


Java 中的 LinkedList 与 ArrayList

LinkedListArrayList 之间的所有差异都源于 Array 和 LinkedList 数据结构之间的差异。 如果大家熟悉 Array 和 LinkedList 数据结构,那么很可能会得出它们之间的以下区别:

  1. 由于 Array 是基于索引的数据结构,因此使用索引从 Array 中搜索或获取元素非常快。 Array 为 get(index) 方法提供了 O(1) 性能,但是在 ArrayList 中移除是昂贵的,因为需要重新排列所有元素。 另一方面,LinkedList 不提供随机或基于索引的访问,我们需要遍历链表以检索 O(n) 阶的任何元素。
  2. 与 ArrayList 相比,LinkedList 中的插入操作简单且快速,因为如果数组变满,则不存在调整数组大小和将内容复制到新数组的风险,这使得在最坏的情况下添加到 O(n) 的 ArrayList 中,同时添加 是Java中 LinkedList 中的 O(1) 操作。 如果我们在数组末尾以外的任何地方插入内容,ArrayList 也需要更新其索引。
  3. 与 ArrayList 相比,删除在 LinkedList 中更像是插入。
  4. LinkedList 比 ArrayList 有更多的内存开销,因为在 ArrayList 中每个索引只保存一个实际对象(数据),但在 LinkedList 的情况下,每个节点都保存数据和下一个和上一个节点的地址。

何时在 Java 中使用 LinkedList 和 ArrayList

正如我们所说,LinkedList 不如 ArrayList 流行,但在某些情况下,LinkedList 是比 Java 中的 ArrayList 更好的选择。 如果出现以下情况,请在 Java 中使用 LinkedList:

  1. 我们的应用程序可以在没有随机访问的情况下生存。 因为如果你需要 LinkedList 中的第 n 个元素,你需要先遍历到第 n 个元素 O(n) 然后从该节点获取数据。
  2. 你的应用程序是更多的插入和删除驱动程序,你插入或删除的不仅仅是检索。 由于插入或移除不涉及调整大小,它比 ArrayList 快得多。

这就是 Java 中 ArrayListLinkedList 之间的区别。 在需要非同步的基于索引的访问的所有情况下,使用 Java 中的 ArrayList。 ArrayList 快速且易于使用,只需尝试通过构造具有适当初始大小的 ArrayList 来最大程度地减少数组大小调整。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Do you understand JavaScript closures?

发布时间:2025/02/21 浏览次数:108 分类:JavaScript

The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.

Do you know about the hidden traps in variables in JavaScript?

发布时间:2025/02/21 浏览次数:178 分类:JavaScript

Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av

How much do you know about the Prototype Chain?

发布时间:2025/02/21 浏览次数:150 分类:JavaScript

The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start

JavaScript POST

发布时间:2024/03/23 浏览次数:96 分类:JavaScript

本教程讲解如何在不使用 JavaScript 表单的情况下发送 POST 数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便