一、LinkedList的基本介绍
1.1、LinkedList底层结构
- LinkedList底层实现了双向链表和双端队列特点。
- 可以添加任意元素(元素可以重复),包括null。
- 线程不安全,没有实现同步。
1.2、LinkedList底层操作机制
-
LinkedList底层维护了一个双向链表。
-
LinkedList中维护了两个属性 first 和 last 分别指向首节点和尾节点。
- 每个节点(Node对象),里面又维护了prev、next、item三个属性,其中通过 prev 指向前一个,通过 next 指向后一个节点。最终实现双向链表。
//定义一个Node类, Node对象 表示双向链表的一个节点
class Node{
public Object item; //真正存放数据的地方
public Node next; //指向后一个节点
public Node pre; //指向前一个节点
public Node(Object name){
this.item = name;
}
public String toString(){
return "Node name=" + item;
}
}
- 所以LinkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高。
二、源码分析
2.1、添加元素
LinkedList linkedList = new LinkedList();
linkedList.add(1);
2.2、删除元素
LinkedList linkedList = new LinkedList();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(4);
linkedList.remove();//默认删除的是集合中的第一个元素
LinkedList是基于双向链表实现的集合,在删除元素时也跟双向链表一致