Java容器源码分析之LinkedList
2021-03-20 06:24
标签:for ESS seq clone 方法 int 图片 技术 简介 LinkedList是一个使用双向链表结构实现的容器,与ArrayList一样,它能动态扩充其长度,LinkedList相较于ArrayList,其任意位置插入速度比ArrayList要快,但是其查询速度要比ArrayList要慢;LinkedList继承自AbstractSequentialList,实现了List、Deque、Cloneable、Serializable接口。 LinkedList UML图如下: 和ArrayList一样,LinkedList也不是一个线程安全的容器。 LinkedList有两个构造方法: addAll()方法: LinkedList也有两个add方法,如下: linkLast方法: linkBefore方法: 获取指定位置node指针方法node: get方法也比较简单,首先检测index是否溢出,然后直接找到index位置的元素,并返回其item。 Java容器源码分析之LinkedList 标签:for ESS seq clone 方法 int 图片 技术 简介 原文地址:https://www.cnblogs.com/Sirius-/p/13934542.htmlLinkedList简介
LinkedList源码分析
构造方法
public LinkedList() {
}
//从已有的一个容器创建一个LinkedList对象
public LinkedList(Collection extends E> c) {
this();
addAll(c);
}
public boolean addAll(Collection extends E> c) {
return addAll(size, c);
}
public boolean addAll(int index, Collection extends E> c) {
//检查index是否溢出
checkPositionIndex(index);
Object[] a = c.toArray();
int numNew = a.length;
if (numNew == 0)
return false;
//获取第index位置的node元素和node的前一个元素
//succ:第index位置的node元素
//pred:index位置前一个node元素
Node
add方法
public boolean add(E e) {
//添加元素到队尾
linkLast(e);
return true;
}
public void add(int index, E element) {
//检查index是否溢出
checkPositionIndex(index);
if (index == size)
//index == size,直接添加到队尾
linkLast(element);
else
//index != size,添加元素到index位置
linkBefore(element, node(index));
}
void linkLast(E e) {
final Node
void linkBefore(E e, Node
Node
get方法
public E get(int index) {
checkElementIndex(index);
return node(index).item;
}
文章标题:Java容器源码分析之LinkedList
文章链接:http://soscw.com/index.php/essay/66576.html