- 底层实现是双向链表
- 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 是怎么选型的?