LinkedList add remove get 代码分析

add

  void linkLast(E e) { //e 要添加的元素
        final Node<E> l = last; // 最后一个元素
        final Node<E> newNode = new Node<>(l, e, null); //创建元素新节点
        last = newNode;
        if (l == null)// 如果最后一个节点null,说明是第一次add 元素
            first = newNode;  //将新的元素置第一个元素
        else
            l.next = newNode; // 如果最后一个节点不为null,就把新节点挂载最后一个节点的下面
        size++; //集合中真实的元素个数
        modCount++;// 操作数++
    }

remove

public E remove(int index) {
        checkElementIndex(index);
        return unlink(node(index));
    }

// ===============================获取要删除的节点    
Node<E> node(int index) {// index=2
        // assert isElementIndex(index);

        if (index < (size >> 1)) {
            Node<E> x = first;
//遍历index 找到要删除的node
            for (int i = 0; i < index; i++)
                x = x.next;
            return x;
        } else {
            Node<E> x = last;
            for (int i = size - 1; i > index; i--)
                x = x.prev;
            return x;
        }
    }
// =================================删除元素
E unlink(Node<E> x) {// x 要删除的节点
        // assert x != null;
        final E element = x.item;  // 获取要删除node的item
        final Node<E> next = x.next//获取要删除node.next
        final Node<E> prev = x.prev;////获取要删除node.prev

// 处理delNode 的prev 节点
        if (prev == null) { // 如果没有上一个元素,就说明delNode是头节点,将delNode的next 节点置为first
            first = next;
        } else {
            prev.next = next; // 如果delNode有上一个节点,就将上一个节点的next 置为delNode的next。简单说就是delNode.next 替换 delNode的位置
            x.prev = null; // 将delNode 的prev 置为null
        }

// 处理delNode 的next节点
        if (next == null) {// 说明delNode 是最后一个node
            last = prev; // 那么delNode 的prev 就是最后一个node
        } else {
            next.prev = prev; // 将prev 节点 关联到next.prev节点
            x.next = null; // 将delNode 的next置为null
        }

        x.item = null;// 将delNode 的item置为null
        size--; // 数组容量--
        modCount++; // 操作数据++
        return element; // 返回删除的node
    }
原文地址:https://www.cnblogs.com/zhangXingSheng/p/10810169.html