LinkedList 类
1、由双向链表实现数据存储
2、元素有序、可重复、允许多个 null 元素
3、线程不安全,没有实现同步、互斥
4、一般情况下 80% - 90% 为查询,所以大部分情况下选择 ArrayList
底层结构 | 增删效率 | 改查效率 | |
ArrayList | 可变数组 | 较低 | 较高 |
LinkedList | 双向链表 | 较高 | 较低 |
底层
1、维护一个双向链表,first、last 分别指向首节点、尾节点
transient Node<E> first;
transient Node<E> last;
2、每个节点(Node 对象)维护 prev、next、item
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
(1)prev 指向前一个节点,next 指向后一个节点,以此实现双向链表
(2)item 节点存储对象
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战