【集合】——LinkedList

LinkedList

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

数据结构

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

java 复制代码
private static class Node<E> {
    E item;
    Node<E> next;
    Node<E> prev;
}

特点

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

常用方法

添加元素:

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

获取元素:

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

修改元素:

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

删除元素:

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

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

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

遍历方式

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

注意事项

  • 随机访问性能差:尽量避免频繁使用索引直接访问元素,适合频繁增删场景。
  • 内存占用:相比 ArrayList,每个节点有额外指针引用,可能占用更多内存空间。
相关推荐
爱干饭的boy3 分钟前
教师管理系统
java·开发语言·c++·windows·python·青少年编程
shinelord明3 分钟前
【再谈设计模式】策略模式 ~ 算法与行为的灵活调度员
开发语言·数据结构·算法·设计模式·数据分析·软件工程
顾北辰2012 分钟前
基本算法——分类
java·spring boot·机器学习
儒道易行23 分钟前
【网络安全实验室】SQL注入实战详情
java·数据库·安全·web安全·网络安全
开心工作室_kaic24 分钟前
springboot521基于Spring Boot的校园闲置物品交易系统(论文+源码)_kaic
java·spring boot·后端
Java知识日历28 分钟前
【内含代码】Spring Boot整合深度学习框架DJL
java·人工智能·spring boot·后端·深度学习
AI人H哥会Java29 分钟前
【Spring】Spring DI(依赖注入)详解—集合类型的注入——List、Set、Map的配置与注入
java·开发语言·后端·spring·架构
走向自由35 分钟前
[Leetcode] 最大子数组和 [击败99%的解法]
算法·leetcode·职场和发展
sjsjs1139 分钟前
【数据结构-单调队列】力扣2762. 不间断子数组
数据结构·算法·leetcode
晚安~~44 分钟前
旅游管理系统|Java|SSM|VUE| 前后端分离
java·开发语言·tomcat·maven