LinkedList知识
发布时间:2026/11/3 19:25:19 锦皓数字建站

一、LinkedList 介绍LinkedList是List 接口的实现类同时实现了Deque双端队列接口 ✅ List 共性有序、可重复、带索引底层双向链表每个 Node 节点prev前驱指针 item数据 next后继指针✅ 核心特点首尾增删速度快只修改指针不需要移动元素查询慢没有数组随机访问按索引查找需要遍历链表线程不安全支持存储 null兼具 List、队列、栈的功能所以有两套首尾 API一组抛异常一组返回 null对比 ArrayListArrayList可变数组 → 查询快中间增删慢LinkedList双向链表 → 首尾增删快查询慢二、LinkedList 特有方法课件全部整理分两类第一组空集合调用时【抛出异常】方法功能描述void addFirst(E e)将元素插入集合开头void addLast(E e)将元素添加到集合结尾E getFirst()返回第一个元素空集合抛异常E getLast()返回最后一个元素空集合抛异常E removeFirst()删除并返回第一个元素空集合抛异常E removeLast()删除并返回最后一个元素空集合抛异常第二组空集合调用时【返回 null不抛异常】Deque 队列方法方法功能描述boolean offer(E e)元素添加到集合尾部boolean offerFirst(E e)元素添加到集合开头boolean offerLast(E e)元素添加到集合结尾E peekFirst()获取第一个元素集合为空返回 nullE peekLast()获取最后一个元素集合为空返回 nullE pollFirst()删除并返回第一个元素集合为空返回 nullE pollLast()删除并返回最后一个元素集合为空返回 null栈相关方法方法功能描述void push(E e)元素压入链表开头栈入栈配套pop()弹出头部元素课件没写配套考点 重点区分口诀get /remove 开头空了抛异常peek /poll 开头空了返回 null安全三、遍历方式包含 Lambda、方法引用普通 for 循环不推荐索引遍历效率低增强 for 循环Iterator 迭代器forEach LambdalinkedList.forEach(elem - System.out.println(elem)); linkedList.forEach(System.out::println);四、完整代码示例import java.util.LinkedList; public class TestLinkedList { public static void main(String[] args) { LinkedListString link new LinkedList(); // 第一组抛异常 link.addFirst(A); link.addLast(B); System.out.println(link.getFirst()); System.out.println(link.getLast()); // 第二组返回null安全 link.offerFirst(0); link.offerLast(9); link.offer(C); System.out.println(link.peekFirst()); System.out.println(link.peekLast()); link.pollFirst(); link.pollLast(); // 栈操作 push入栈 link.push(Top); System.out.println(link); // Lambda遍历 link.forEach(System.out::println); } }五、适用场景✅ 适合频繁首尾添加、删除用作队列、栈 ❌ 不适合大量随机索引查询六、List 两大实现类对比集合底层结构查询中间增删首尾增删线程安全ArrayList可变数组快慢慢不安全LinkedList双向链表慢慢很快不安全七、易错总结多态写ListString list new LinkedList()时只能调用 List 接口方法调用不了 addFirst、offerFirst 等特有方法必须用 LinkedList 接收LinkedList 有索引只是逻辑编号底层不是数组没有随机访问两套首尾 API 选择不确定集合是否为空 → 优先用 peek/poll 系列避免异常
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。