LinkList

2020-07-03  本文已影响0人  赵呆一

前言

在看了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很浪费资源

上一篇 下一篇

猜你喜欢

热点阅读