何时应使用 List vs LinkedList

2024 年 8 月 28 日 | 3 分钟阅读

在软件工程中,我们如何构建数据是成功的一半。有许多工具可以帮助我们进行数据管理。“你知道何时使用?为什么要使用?关键在于在哪里使用!”

数据结构是我们组织数据的各种方式,无论我们使用何种语言编写,它都是我们首先会遇到的事物之一;数组、栈、链表、变量等等都是不同类型的数据结构。这些只是数据结构中的冰山一角。在本文中,我们将比较和对比链表和列表。

在 Java 中,列表似乎是

Java 中的 List 是一个有序的元素集合,可以存储重复的值。因为 List 会保存插入顺序,所以它允许按位置访问和插入元素。

以下类实现了 List 接口

  • Vector
  • ArrayList
  • Stack
  • 链表

链表

LinkedList 是一种线性数据结构,其元素存储在非连续的内存位置。简单来说,它是一组随机存储在内存中的项。这些项被称为节点。

链表是一种数据结构,由一系列节点组成。每个节点都有一个值和一个指向下一个节点的指针。

链表的大小可以显著增加。从链表中插入和删除项也很简单。

一个节点有两个字段——一个用于数据,一个用于引用。数据字段包含记录在该特定地址的信息。而引用链接则带有一个指向内存中下一个节点地址的指针。链表的最后一个节点指向 null。

链表的主要优点如下

  • 它没有固定大小,可以在运行时通过分配和释放内存来改变。
  • 链表简化了插入和删除过程。
  • 由于链表的大小可以在运行时改变,因此不会浪费内存。

链表的缺点如下

  • 需要额外的内存空间来存储指向数据的指针。
  • 因为它不是基于索引的,所以无法进行随机访问。
  • 在链表中反向遍历很困难。在双向链表的情况下会更容易,但需要额外的内存来存储后向指针,从而降低了内存效率。

以下是 List 和 LinkedList 之间的区别

列表链表
它不能被启动。链表更适合信息控制。
它是一个用户界面。LinkedList 内部通过双向链表存储组件。
它扩展了集合系统。使用链表进行控制比使用 ArrayList 更快,因为它使用双向链表,因此在内存中不需要进行数字移动。
这些元素通过使用文件来识别和访问。LinkedList 实现了列表接口的双向链表。
它创建了一个按顺序存储的组件集合。在链表中,没有默认容量的情况。当引入链表时,会创建一个空列表。

List 的好处

  • 您可以将 List 视为一个可调整大小的数组。List 的大小不是固定的。列表可以随时间增长和缩小。
  • 可以从给定位置插入或删除组件。
  • List 类包括多种用于控制已存储项的策略。
  • 列表可以有各种不正确的组件。
  • 可以在列表中存储重复组件。

LinkedList 的好处

  • 内存使用、插入和删除操作
  • 动态数据结构
  • 随机访问
  • 实现无内存浪费
  • 反向访问

结论

本教程的重点是对比数据结构 List 与 LinkedList,以及两者的优点。