List集合之LinkedList

一、初步认识

          LinkedList也是List接口的实现类,与ArrayList不同之处是采用的存储结构不同,ArrayList的数据结构为线性表,而LinkedList数据结构是链表。链表数据结构的特点是每个元素分配的空间不必连续、插入和删除元素时速度非常快、但访问元素的速度较慢。

         LinkedList是一个双向链表, 当数据量很大或者操作很频繁的情况下,添加和删除元素时具有比ArrayList更好的性能。但在元素的查询和修改方面要弱于ArrayList。LinkedList类每个结点用内部类Node表示,LinkedList通过first和last引用分别指向链表的第一个和最后一个元素,当链表为空时,first和last都为NULL值。

二、继承关系

1 public class LinkedList<E>
2     extends AbstractSequentialList<E>
3     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中的操作不是线程安全的。

二、存储结构图

 每个节点都应该有3部分内容:

 class  Node {
        Node  previous;     //前一个节点
        Object  element;    //本节点保存的数据
        Node  next;         //后一个节点
}

三、LinkedList源码分析

大神讲的很清晰:https://www.cnblogs.com/yijinqincai/p/10964188.html

原文地址:https://www.cnblogs.com/qiaoxin11/p/12580118.html