1.LinkedList底层源码
(1)LinkedList类源码(继承、实现)
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
(2)LinkedList类继承和接口图
2.LinkedList底层操作机制
(1)说明
- LinkedList底层实现了双向链表和双端队列特点
- 可以添加任意元素(元素可以重复),包括空元素null
- 线程不安全,没有实现同步
(2)底层操作机制
- LinkedList底层维护了一个双向链表
- LinkedList中维护了两个属性first和last,分别指向首节点和尾节点
- 每个节点(Node对象),里面又维护了一个prev、next、item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表
- 所有LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率高
上图可以看到,LinkedList链表节点定义。 下图为双向链表的示意图:
3.LinkedList与ArrayList比较
4.LinkedList部分方法测试
(1)LinkedList的增删改查
增加元素方法(双向链表和双端队列特点):
删除元素方法(双向链表和双端队列特点):
修改元素方法(双向链表和双端队列特点):
查询元素方法(双向链表和双端队列特点): (2)简单代码
在增删改查中,如果使用的是双向链表的操作(增、删、改、查),就按照双向链表的方式进行处理;如果使用的是双端队列的操作(增、删、改、查),就按照双端队列的方式进行处理。(因为LinkedList同时具备双端队列和双向链表的特点)。
package Collection.linkedList;
import java.util.LinkedList;
public class LinkedListTest {
public static void main(String[] args) {
LinkedList linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
System.out.println(linkedList);
linkedList.set(1,4);
linkedList.remove();
linkedList.getFirst();
}
}
|