LinkedList 源码分析

简介

源码分析

定义:

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;
    }
}
// 创建一个空的链表对象
public LinkedList() {
}

// 接收一个集合类型作为参数,会创建一个与传入集合相同元素的链表对象
public LinkedList(Collection<? extends E> c) {
    this();
    addAll(c);
}

相关方法

插入元素:

获取元素:

对于 node(int index) 方法:该方法通过比较索引值与链表 size 的一半大小来确定从链表头还是尾开始遍历

删除元素:

对于 unlink(Node<E> x) 方法:即实现:

迭代器操作:
从头到尾:hasNextnext
从尾到头:hasPreviousprevious