前言
在看了ArrayList 发现LinkList跟ArrayList的构造很相似 只不过在添加的时候换成了游标的类型 当每一次添加一个的时候就判断所有数据 然后加1
代码
每次创建时候 添加一个元素
/**
* Appends the specified element to the end of this list.
*
* <p>This method is equivalent to {@link #addLast}.
*
* @param e element to be appended to this list
* @return {@code true} (as specified by {@link Collection#add})
*/
public boolean add(E e) {
linkLast(e);
return true;
}
/**
* Links e as last element.
*/
void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}
数量加一 大小加一 是否是第一个数据 如果添加的不是第一个数据则游标往后一位移动
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
每一个节点 是不是根节点 前一个元素 后一个元素 这样看起来 在大量添加元素的时候每次都要创建一个final类型的游标 很浪费资源 如果大量添加数据的话 使用LinkList很浪费资源
网友评论