Java老油条 潜水
  • 3发帖数
  • 3主题数
  • 0关注数
  • 0粉丝
开启左侧

LinkedList 源码解析

[复制链接]
Java老油条 发表于 2021-9-22 13:45:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
类结构

LinkedList底层采用双向链表结构存储数据,答应重复数据和null值,长度没有限制:

                               
登录/注册后可看大图

每个节点用内部类Node表现:
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(前继节点)。数组内存地址必须连续,而链表就没有这个限制了,Node可以分布于各个内存地址,它们之间的关系通过prev和next维护。
LinkedList类关系图:

                               
登录/注册后可看大图

可以看到LinkedList类并没有实现RandomAccess接口,额外实现了Deque接口,所以包含一些队列方法。
LinkedList包含如下成员变量:
// 元素个数,默认为0transient int size = 0;// 表现第一个节点,第一个节点必须满足(first == null && last == null) || (first.prev == null && first.item != null)transient Node first;// 表现最后一个节点,最后一个节点必须满足(first == null && last == null) || (last.next == null && last.item != null)transient Node last;复制代码方法解析

构造函数

LinkedList():
public LinkedList() {}复制代码空参构造函数,默认size为0,每次添加新元素都要创建Node节点。

LinkedList(Collection
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城