查看: 231|回复: 0

Java集合基于JDK1.8的LinkedList源码分析

[复制链接]
发表于 2020-2-3 00:22:14 | 显示全部楼层 |阅读模式
上篇我们分析了ArrayList的底层实现,知道了ArrayList底层是基于数组实现的,因此具有查找修改快而插入删除慢的特点。本篇先容的LinkedList是List接口的另一种实现,它的底层是基于双向链表实现的,因此它具有插入删除快而查找修改慢的特点,此外,通过对双向链表的操作还可以实现队列和栈的功能。LinkedList的底层布局如下图所示。

F表现头结点引用,L表现尾结点引用,链表的每个结点都有三个元素,分别是前继结点引用(P),结点元素的值(E),后继结点的引用(N)。结点由内部类Node表现,我们看看它的内部布局。
  1. //结点内部类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;    }}
复制代码
Node这个内部类实在很简朴,只有三个成员变量和一个构造器,item表现结点的值,next为下一个结点的引用,prev为上一个结点的引用,通过构造器传入这三个值。接下来再看看LinkedList的成员变量和构造器。
[code]//聚集元素个数transient int size = 0;//头结点引用transient Node first;//尾节点引用transient Node last;//无参构造器public LinkedList() {}//传入外部聚集的构造器public LinkedList(Collection

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表