β

Java集合详解2:LinkedList和Queue

Harries Blog™ 43 阅读

今天我们来探索一下 LinkedList 和Queue,以及Stack的 源码

具体 代码 在我的 GitHub 中可以找到

https :// git hub.com/h2pl/MyTech

喜欢的话麻烦s tar 一下哈

文章 首发于我的个人 博客

http s://h2pl.github.io/2018/05/09/collection2

更多关于Java后端学习的内容请到我的C SDN 博客上查看: https://blog.csdn.net/a724888

我的个人博客主要发原创文章,也欢迎浏览

https://h2pl.github.io/

本文参考 http://cmsblogs.com/?p=155

https://www.jianshu.com/p/0e84b8d3606c

LinkedList概述

LinkedList与 ArrayList 一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和 删除 时更优于ArrayList,而随机访问则比ArrayList逊色些。

LinkedList实现所有可选的列表操作,并允许所有的元素包括null。

除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。

此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。

所有操作都是按照双重链接列表的需要执行的。在列表中编 索引 的操作将从开头或结尾 遍历 列表(从靠近指定索引的一端)。

同时,与ArrayList一样此实现不是 同步 的。

(以上摘自JDK 6.0 API )。

源码分析

定义

首先我们先看LinkedList的定义:

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
      从这段代码中我们可以清晰地看出LinkedList继承AbstractSequentialList,实现List、Deque、Cloneable、Serializable。其中AbstractSequentialList提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作,从而以减少实现List接口的复杂度。Deque一个线性 collection,支持在两端插入和移除元素,定义了双端队列的操作。

属性

在LinkedList中提供了两个基本属性size、header。

private transient Entry

header = new Entry
作者:Harries Blog™
追心中的海,逐世界的梦
原文地址:Java集合详解2:LinkedList和Queue, 感谢原作者分享。

发表评论