- 底层实现是双向链表

- add方法是如何添加元素的
- 调用add方法的时候会调用linkLast()方法 ,把last变量赋值给临时变量l,然后创建一个新的node节点信息 ,赋值给last节点 ,判断临时变量l是否为null 若为null 说明是第一个节点 fast 等于newNode,若l不为null的时候就l.next为newNode


- 调用add方法的时候会调用linkLast()方法 ,把last变量赋值给临时变量l,然后创建一个新的node节点信息 ,赋值给last节点 ,判断临时变量l是否为null 若为null 说明是第一个节点 fast 等于newNode,若l不为null的时候就l.next为newNode
- remove方法是如何删除元素的
- 首先先检查一下index是否越界 ,若不越界

- 检查节点是在前半部分还是在后半部分,然后获取到节点信息

- 获取到节点之后进行节点的处理

- 首先先检查一下index是否越界 ,若不越界
- LinkedList 特点
- 增删效率高
- 查询效率低
- 面试题:
- 你在工作中对 ArrayList 和 LinkedList 是怎么选型的?
- 如果项目中有需要快速的查找匹配,但是新增删除不频繁我一般使用的是 ArrayList 数组结构,但是如果查询比较少,新增和删除比较多我一般用的是 LinkedList 链表结构。(ps:结合它们的原理回答为什么)
- 你在工作中对 ArrayList 和 LinkedList 是怎么选型的?

本文深入探讨了LinkedList的底层实现,包括双向链表结构、add和remove方法的工作机制,以及其增删操作高效但查询效率较低的特点。同时,对比了ArrayList和LinkedList在不同场景下的适用性。
12万+

被折叠的 条评论
为什么被折叠?



