当前位置: 首页 > article >正文

【集合】——LinkedList

LinkedList

LinkedList 位于 java.util 包下,实现了 List 接口与 Deque 接口,它是一种双向链表结构的数据集合,能灵活存储多个元素,可用于模拟栈、队列等数据结构。

数据结构

基于双向链表实现,每个节点包含元素本身、指向前一个节点的引用以及指向后一个节点的引用。

private static class Node<E> {
    E item;
    Node<E> next;
    Node<E> prev;
}

特点

  • 高效的插入和删除:在链表中间进行插入或删除操作时,只需调整相关节点的引用,无需像 ArrayList 那样大量移动元素,时间复杂度为 O(1)(特定位置操作)。
  • 顺序访问特性:不支持像数组那样的随机访问,按顺序访问元素,查找特定元素需从头或尾开始遍历,时间复杂度为 O(n)。

常用方法

添加元素:

  1. add(E e):添加元素到链表末尾。
LinkedList<String> list = new LinkedList<>();
list.add("apple");
  1. add(int index, E element):在指定索引处插入元素。
list.add(1, "banana");

获取元素:

  1. E get(int index):获取指定索引的元素,但遍历查找较慢。
String element = list.get(0);

修改元素:

  1. E set(int index, E element):替换指定索引元素。
String oldElement = list.set(0, "orange");

删除元素:

  1. remove(int index) 或 remove(Object o):按索引或对象删除元素,调整节点引用实现删除。
String removedElement = list.remove(0);

队列和栈相关操作(因实现 Deque 接口):

  • offer(E e) 相当于 add 用于队列添加元素;pop() 实现栈的弹出操作等。

遍历方式

  • 迭代器遍历:常用且高效
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}
  • 增强 for 循环遍历(foreach):简洁方便
for (String s : list) {
    System.out.println(s);
}

注意事项

  • 随机访问性能差:尽量避免频繁使用索引直接访问元素,适合频繁增删场景。
  • 内存占用:相比 ArrayList,每个节点有额外指针引用,可能占用更多内存空间。

http://www.kler.cn/a/458608.html

相关文章:

  • WebRTC的三大线程
  • 基于傅立叶神经网络(FNN)与物理信息神经网络(PINN)求解泊松方程(附Pytorch源代码)
  • 为什么需要设置 `NCCL_P2P_DISABLE=1` 和 `NCCL_IB_DISABLE=1`?
  • Anaconda+PyTorch(CPU版)安装
  • 【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)
  • ffmpeg 编译+ libx264
  • 机器算法之逻辑回归(Logistic Regression)详解
  • 【Leetcode 热题 100】208. 实现 Trie (前缀树)
  • LeetCode 876:链表的中间节点
  • 典型常见的基于知识蒸馏的目标检测方法总结三
  • Langchain Chat Model 和 Chat Prompt Template
  • 【Axios】如何在Vue中使用Axios请求拦截器
  • Flutter DragTarget拖拽控件详解
  • Effective C++ 条款30:透彻了解 inlining 的里里外外
  • vue 中 ref 详解
  • 移动机器人推动制造业向自动化转升级
  • 数据仓库和数据湖 数据仓库和数据库
  • AI写标书工具:高效智能的标书撰写助手——标小兔
  • 高效设计AI Prompt:10大框架详细对比与应用
  • 【K8S系列】深入解析K8S服务的无状态与有状态
  • CPU、DPU、GPU
  • 华三与华为ACL,及ACL+QOS的区别
  • windows C#-使用对象初始值设定项初始化对象
  • Excel for Finance 04 `IFERROR` 函数
  • ROUGE指标在自然语言处理中的应用:从理论到实践
  • 影刀进阶指令 | liblib反推 (SD AI绘图反推)