源码阅读之LinkedList实现细节

  • 时间:
  • 浏览:2
  • 来源:uu快3游戏_uu快3计划_苹果版

清空链表

查看链表头节点

它实际是调用了内部的另有三个 私有土措施 linkFirst 。只时需改变指针指向,时间繁杂度O(1)。

删除头节点

查看链表头节点

这是通过列表来创建链表的。它调用了 addAll 土措施。随后 土措施后文会讲到。

在某个 index 前插入元素。

LinkedList 是另有三个 双向链表,这是另有三个 基础的数据形态学 。打开 LinkedList 源码,还时需看完它继承于 AbstractSequentialList ,随后 是 AbstractList 的子类。一起也实现了 ListDequeCloneSerializable 接口。也不繁杂的类关系图还时需表示为

LinkedList 是实现了序列化接口 Serializable ,而以上属性都被声明为 transient 表示哪几个字段不参与序列化。

查询某个对象是否所处于该链表中是通过遍历来实现的。

它会判断由于 index 是等于 size 如此就在尾部插入元素,随后就在 index 所在节点前面插入元素。

首先它会检查 index 是否正确。由于在 0~size 范围内的下标,如此就执行插入的土措施;

随后 节点类,记录链表中的节点的数据,有前指针、后指针和具体的数据元素。随后 数据这里用泛型来表示了。

遍历整个链表,将节点中的数据置为 null

获取 index 所在元素,通过 node 土措施获取。前面分析还时需知道,随后 土措施时需遍历,它的时间繁杂度是O(n)。

随后 是默认构造函数,创建另有三个 空链表。

随后 土措施稍微繁杂随后

查看链表尾部节点

获取尾部节点,并将尾部节点删除

在尾部插入另有三个 列表,通过调用 add(int,Collection) 来实现。

随后 土措施在节点 succ 前面加在元素,时间繁杂度为O(1)。

在链表头部加在节点

获取头节点,并把头节点从链表中删除

同上

还时需看出也是调用了 linkLast 土措施。

在调用随后 土措施过后时需获取到节点

在链表中要通过下标查找另有三个 节点,时需通过遍历。这里做了另有三个 优化,当 index 是在前半帕累托图时从链表头部开始英文英文遍历;由于 index 超过当前链表的一时分则从后面 开始英文英文遍历查询,它的时间繁杂度为O(n)。

在链表尾部加在另有三个 节点。它也是内部的 linkLast 土措施。这土措施执行下行速度 也很高,只时需改变指针指向,时间繁杂度是O(1)。