java集合(二)List集合之LinkedList详解

您所在的位置:网站首页 linkedlist集合的特点 java集合(二)List集合之LinkedList详解

java集合(二)List集合之LinkedList详解

2023-11-19 00:17| 来源: 网络整理| 查看: 265

LinkedList是一个以双向链表实现的List,它除了作为List使用,还可以作为队列或者堆栈使用。

LinkedList介绍 LinkedList继承关系

 

 

LinkedList简介 LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当做堆栈、队列或双端队列进行使用。 LinkedList实现List接口,能让它进行队列操作。 LinkedList实现Deque接口,即能将LinkedList当做双端队列使用。 LinkedList实现Cloneable,即覆盖了函数clone(),能被克隆。 LinkedList实现了java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。 LinkedList中的操作不是线程安全的。 LinkedList源码分析 AbstractSequentialList介绍

我们在看LinkedList之前先简单介绍下其父类AbstractSequentialList。

AbstractSequentialList继承自AbstractList,是List接口的简化版实现。

AbstractSequentialList只支持按次序访问(链表在内存中不是按顺序存放的,而是通过指针连在一起,为了访问某一元素,必须从链头开始顺着指针才能找到某一个元素。),不像AbstractList可以随机访问。

想要实现一个支持次序访问的List的话,只需要继承这个类,并实现的指定的方法listIterator(int index)和size()。实现ListIterator的hasNext()、next()、hasPrevious()、previous()、previousIndex()就可以获得一个不可修改的列表,如果你想让它可修改还需实现remove()、set(E e)、add(E e)方法。

属性

LinkedList的主要属性如下代码所示:

//链表节点的个数 transient int size = 0; //链表首节点 transient Node first; //链表尾节点 transient Node last;

关于transient关键字的最用可以查看我上次写的ArrayList。

//内部静态类 private static class Node { //当前节点元素值 E item; //下一个节点 Node next; //上一个节点 Node prev; Node(Node prev, E element, Node next) { this.item = element; this.next = next; this.prev = prev; } } 构造函数 无参构造函数

如果不传入参数,则使用默认构造方法创建LinkedList对象,如下:

public LinkedList() { }

此时创建的是一个空的链表。

带Collection对象的构造函数 public LinkedList(Collection


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3