LinkList

作者: 赵呆一 | 来源:发表于2020-07-03 15:02 被阅读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很浪费资源

    相关文章

      网友评论

          本文标题:LinkList

          本文链接:https://www.haomeiwen.com/subject/uqusqktx.html