zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C++头文件相互引用,最好一个#include,另一个class C;
    Git 安装配置
    loadrunner字符串赋值
    loadrunner 调用外部dll
    redis启动、清缓存命令
    solr-6.4.1 学习安装与配置 和 Elasticsearch(1.5.2)学习文档
    分页
    JS原型理解
    angular2 依赖注入新坑。
    javascript数组传值与地址。
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12580118.html
Copyright © 2011-2022 走看看