美文网首页
LinkedList

LinkedList

作者: 有腹肌的豌豆Z | 来源:发表于2020-09-30 08:49 被阅读0次

Java-链表

LinkedList定义

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

LinkedList 是一个继承于AbstractSequentialList的双向循环链表。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList 实现 List 接口,能对它进行队列操作。
LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。
LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。
LinkedList 实现java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。
LinkedList 是非同步的。

LinkedList属性

private transient Entry<E> header = new Entry<E>(null, null, null);
private transient int size = 0;

private static class Entry<E> {
    E element;  // 当前存储元素
    Entry<E> next;  // 下一个元素节点
    Entry<E> previous;  // 上一个元素节点
    Entry(E element, Entry<E> next, Entry<E> previous) {
        this.element = element;
        this.next = next;
        this.previous = previous;
    }
}

  • LinkedList中提供了两个属性,其中size和ArrayList中一样用来计数,表示list的元素数量,而header则是链表的头结点,Entry则是链表的节点对象。
  • Entry为LinkedList 的内部类,其中定义了当前存储的元素,以及该元素的上一个元素和下一个元素。

LinkedList构造函数

/**
* 构造一个空的LinkedList .
*/
public LinkedList() {
    //将header节点的前一节点和后一节点都设置为自身 双向循环链表
    header.next = header. previous = header ;
}

/**
* 构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列
*/
public LinkedList(Collection<? extends E> c) {
    this();
    addAll(c);
}

https://www.jianshu.com/p/820dd2fec5e8

相关文章

网友评论

      本文标题:LinkedList

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