先从上图了解一下什么是双循环链表,什么是源码中的header。
LinkedList就是一个实现了双循环链表的类。
// 其构造函数,已完成了前驱结点和后继结点的指向工作
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
Entry(E element, Entry<E> next, Entry<E> previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
private Entry<E> addBefore(E o, Entry<E> e) {
// newEntry的后继节点指向e,前驱结点指向节点e的前一个节点
// 换句话说,newEntry完成了自身的节点初始化工作
// 将节点newEntry插入到节点e和节点e的前一个节点之间
Entry<E> newEntry = new Entry<E>(o, e, e.previous);
// 双向链表由前区节点和后继节点共同完成
// 改变newEntry前后节点的指针指向,使其指向newEntry
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
关于随机访问:
//LinkedList中获取元素方法
private Entry<E> entry(int index) {
if (index < 0 || index >= size)
throw new IndexOutOfBoundsException("Index: "+index+
", Size: "+size);
Entry<E> e = header;
if (index < (size >> 1)) {
for (int i = 0; i <= index; i++)
e = e.next;
} else {
for (int i = size; i > index; i--)
e = e.previous;
}
return e;
}
随机访问是指访问某个元素时,可直接找到其相应位置,如通过下标直接访问数组中元素。
与随机访问相对的是顺序访问,必须通过挨个访问相邻元素,才能获取到所需元素,如上述linkedlist类。
现实生活中,磁带就是顺序访问,磁盘就是随机访问。
- 大小: 22.4 KB
分享到:
相关推荐
LinkedList源码解析 LinkedList是Java中的一种链表实现,它的底层是一个环形双向链表。在 LinkedList 中,节点之间通过引用相互连接,形成一个链表结构。LinkedList 提供了多种方法来操作链表,包括添加、删除、...
《LinkedList源码解析》 LinkedList是Java集合框架中的一员,它是AbstractSequentialList的子类,同时也实现了List、Deque和Cloneable、Serializable接口。LinkedList作为双向链表,支持快速的添加、删除元素,尤其...
《ArrayList与LinkedList源码解析》 在Java编程中,ArrayList和LinkedList是两种常见的动态数组,它们都是Java集合框架的一部分,提供了对元素存储和操作的功能。本篇将深入探讨ArrayList和LinkedList的内部实现...
### LinkedList部分源码解析 #### 一、简介 `LinkedList`是Java集合框架的一个重要组成部分,它基于双向链表实现,既支持`List`接口也实现了`Deque`接口,因此可以作为列表、栈或者队列使用。双向链表的每个节点...
接下来,我们将通过JDK 7.0的源码,深入探讨LinkedList的底层实现原理。 首先,LinkedList实现了List接口,因此它是一个有序列表。它还实现了Deque接口,这意味着LinkedList支持双端队列的操作。除了这些接口之外,...
"Java基于JDK 1.8的LinkedList源码详析" LinkedList是Java中一个非常重要的数据结构,基于双向链表实现,适用于增删频繁且查询不频繁的场景。今天我们将深入分析LinkedList的源码,了解其内部实现机制和特点。 1. ...
《Jdk1.6 Collections Framework源码解析(2)-LinkedList》 LinkedList是Java集合框架中的一个重要的类,它是List接口的实现,同时继承了AbstractSequentialList,并实现了Deque接口。LinkedList是一种双链表结构,...
Java源码解析LinkedList Java源码解析LinkedList是Java集合框架中的一种重要数据结构。它是一种双向链表,具有高效的插入和删除操作。今天,我们将深入探讨LinkedList的源码,了解它的内部实现机制。 首先,让我们...
Java集合系列之LinkedList源码分析 概述: 本文详细介绍了Java集合系列之LinkedList的源码分析,主要介绍了LinkedList的底层实现、成员变量、构造器、增删改查方法等。LinkedList是一种基于双向链表的数据结构,...
java所有集合类底层源码解析汇总,包括ArrayList、HashMap、HashSet、LinkedList、TreeMap、HashSet、ConcurrentHashMap等集合框架的底层实现源码大白话解读。
Java源码解析——看优秀源码最能使人进步 Java源码解析是一种深入了解JDK源码的方式,适合那些想深入了解JDK源码的人。通过对JDK源码的解析,可以让开发者更好地理解Java语言的底层逻辑,从而写出更加高效、稳定的...
`LinkedList` 源码解析 `LinkedList`内部维护了一个双向链表,每个节点(`Node`)包含三个字段:`element`(存储元素),`next`(指向下一个节点),`previous`(指向前一个节点)。这些字段使得在链表的头尾进行...
Java项目学习库与SpringBoot源码解析是一套深入学习Java编程和SpringBoot框架的资源集合。这个库旨在帮助开发者从初级到高级逐步掌握Java技术栈,并深入理解SpringBoot的核心机制。下面将对Java和SpringBoot的相关...
再者,为了实现动态加载和分页显示,源码中可能会用到Java的集合框架,如ArrayList、LinkedList、HashMap等,以及流(Stream) API进行数据处理。同时,考虑到性能和用户体验,可能还会涉及到缓存技术,如Redis,用来...
能学到什么:ArrayList的源码分析,自动扩容和自动缩容的源码分析,相关参数的深度解析,从是什么,为什么,怎么做三个角度进行讲解,用通俗易懂的白话进行介绍,LinkedList和Vector以及ArrayList的区别以及使用场景...
LinkedList 适用于频繁的插入和删除操作,因为它的插入和删除操作时间复杂度为 O(1),而 ArrayList 的这些操作需要移动元素,时间复杂度为 O(n)。然而,ArrayList 在查询元素时效率更高,因为可以通过索引直接访问,...
Java源码分析Iterable Java源码分析Iterable是Java编程语言中一个基础组件的源码分析,Iterable是一个接口,它允许对象被迭代,例如foreach循环中的数组或集合。了解Iterable的源码,可以帮助开发者更好地理解Java...
LinkedList-master这个文件名可能是该代码实现的源码仓库或项目文件夹,里面可能包含了完整的LinkedList实现以及相关的测试用例和文档。通过查看这个压缩包,开发者可以深入理解LinkedList的实现细节,并将其应用于...
本文将深入探讨LinkedList的工作原理,以及如何通过源码来理解其内部操作。 首先,LinkedList的核心在于它的节点类Node,每个节点包含三个字段:一个指向前一个节点的引用,一个存储元素的值,以及一个指向后一个...