目录
(1)底层实现了双向链表和双端队列;
(2)可以添加任意元素,包括null;
(3)没有线程安全。
执行add方法

linkLast(E e)方法:将新节点加入链表最后
(1)用l记录尾节点;
(2)创建新节点存储插入值,前指向,后指向;
(3)尾指针指向插入节点;
(4)判断原来是否为第一次插入,l==null为第一次插入,头指针指向插入节点,若不是第一次插入,插入元素之前链表的尾元素的后指针指向插入元素;
(5)长度+1,修改次数+1;

3、remove()源码
执行remove(),默认删除第一个节点

removeFirst()判断链表是否为空,为空抛出异常,不为空进入删除操作

unlinkFirst()方法执行删除
(1)使用element记录删除元素的值;
(2)使用next记录删除节点的下一个节点;
(3)删除节点;
(4)头指针指向删除节点的下一个节点;
(5)判断删除节点的下一个节点是否为空·,为空,尾指针指向null,不为空,next节点的前指针指向null
(6)链表长度减一,修改次数+1,返回删除的元素

| 底层 | 增删效率 | 改查效率 | |
| ArrayList | 可变数组 | 较低,数组扩容 | 较高 |
| LinkedList | 双向链表 | 较高 | 较低 |
(1)改查多,使用ArrayList;
(2)增删多,使用LinkedList