LinkedList底层是用双向链表实现的;
下面看其构造方法:
public LinkecList(){
header.next=header.previous=header;
}
此处构造了双向链表的一个头节点。
再看一下header的定义:
private transient Entry<E> header = new Entry<E>(null, null, null);
然后在看Entry
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
。
。
。
}
这不正是双向链表的节点定义方式吗
下面看add(E e)方法:
public boolean add(E e) {
addBefore(e, header);
return true;
}
private Entry<E> addBefore(E e, Entry<E> entry) {
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
这是在头节点之前加入一个元素,同理,对于LinkedList的一些操作都是基于对双向列表的操作,因此,当我们往链表里面添加数据时,底层构造一个Entry对象,然后把这个对象放到链表之中
分享到:
相关推荐
3. **源码分析**: - `getFirst()`和`getLast()`通过直接访问`first`和`last`属性来获取元素,这两个属性分别保存链表的第一个和最后一个节点。 - `removeFirst()`和`removeLast()`通过`unlinkFirst(Node<E> f)`和...
在JDK源码阅读Collection详解中,我们可以看到Collection接口的实现类有很多,如ArrayList、LinkedList、HashSet、TreeSet等。这些实现类都继承了Collection接口,并实现了其定义的方法。 在实际开发中,我们经常...
Java LinkedList 的实现原理图文详解 Java LinkedList 是一个通过双向链表实现的 List 和 Deque 接口,它允许插入所有元素,包括 null,并且它是线程不同步的。如果对双向链表这个数据结构很熟悉的话,学习 ...
《C#基础与案例开发详解》是一本针对初学者和有一定经验的开发者设计的教程,旨在深入浅出地介绍C#编程语言的基础知识,并通过实际案例帮助读者掌握C#的运用技巧。光盘源码提供了书中所有示例的源代码,使学习过程...
Java详解源码.zip是一个包含Java编程语言源代码的压缩文件,旨在帮助学习者深入理解Java的内部机制和工作原理。这个资源可能包含了各种Java类库、框架或项目的源代码示例,通过分析这些源码,我们可以了解到Java在...
《C#基础与案例开发详解》是一...总的来说,《C#基础与案例开发详解》下部分的源码集,是一个深入学习C#编程、提升实践技能的宝贵资料。通过学习和实践这些内容,你不仅可以巩固基础知识,还能提高开发复杂应用的能力。
ArrayList核心源码+扩容机制分析LinkedList核心源码分析HashMap核心源码+底层数据结构分析ConcurrentHashMap核心源码+底层数据结构分析LinkedHashMap核心源码分析CopyOnWriteArrayList核心源码分析...
项目相关 项目介绍 ...LinkedList 核心源码分析 HashMap 核心源码+底层数据结构分析 ConcurrentHashMap 核心源码+底层数据结构分析 LinkedHashMap 核心源码分析 CopyOnWriteArrayList 核心源码分析
【CoreJava源码详解】 CoreJava是Java编程的基础部分,主要涵盖了Java语言的核心特性、类库和编程实践。达内科技作为知名的IT培训机构,提供的这个源码集合可以帮助学习者深入理解Java编程的本质,掌握核心技能。 ...
**JDK源码详解** JDK(Java Development Kit)是Oracle公司发布的用于开发Java应用程序的软件开发工具包,其中包含了Java运行环境、编译器、类库以及各种工具。JDK1.8版本是Java历史上的一个重要里程碑,引入了许多...
【Java基础源码详解】 Java是一种广泛使用的面向对象的编程语言,它的强大在于其跨平台性、丰富的类库以及高效的应用开发能力。本资源“毕向东Java基础源码+总结”提供了一套全面的Java基础知识的源代码示例,帮助...
【Java斗地主源码详解】 斗地主是一款广受欢迎的扑克牌游戏,它具有丰富的策略性和娱乐性。在IT行业中,将这类游戏转化为代码,是软件开发中的一个经典案例,能够帮助开发者深入理解面向对象编程、游戏逻辑设计以及...
《Java Core 卷源码详解》 Java Core是Java编程领域的基础和核心,它涵盖了Java语言的各个方面,包括语法、类库、并发编程、内存管理等。本资源为"Java Core 8 核心卷源码",是最新的版本,对于理解和深入学习Java...
【JavaSE版QQ源码详解】 JavaSE版的QQ源码是基于Java标准版(Java Standard Edition)开发的即时通讯软件。它展示了如何利用Java语言实现一个基础的、支持多人聊天的功能,包括用户注册、登录以及消息传递等核心...
【C#连连看源码详解】 C#连连看是一款经典的桌面游戏,它的核心逻辑是基于图形用户界面(GUI)和算法实现的。本项目利用C#编程语言进行开发,为学习C#和游戏开发的爱好者提供了宝贵的参考资料。下面将详细探讨C#...
**JAVA图书馆管理系统源码详解** Java编程语言在开发企业级应用方面有着广泛的应用,而图书馆管理系统作为典型的信息管理系统,是学习和实践Java技术的良好案例。本篇将详细解析基于Java编写的图书馆管理系统的源码...
【Java基础案例解析源码详解】 本资源"东方标准java基础案例解析源码"是针对初学者精心设计的一系列Java编程实例,旨在帮助学习者掌握Java语言的基础知识和编程技巧。"东方标准"通常代表着一套系统的教学体系,这里...
《连连看 C# 魔兽世界版 源码详解》 连连看,这款深受玩家喜爱的经典益智游戏,以其简洁的操作和丰富的趣味性,成为休闲娱乐的首选。而利用C#编程语言实现连连看,不仅可以提升程序员的技能,也能为游戏爱好者提供...
《基于Java实现的图书馆管理系统源码详解》 在信息技术飞速发展的今天,计算机软件已经渗透到各个领域,其中图书馆管理系统的开发与应用是信息化进程中的重要一环。本篇文章将详细解析一个基于Java语言实现的图书馆...
《Java开发坦克大战源码详解》 在编程领域,坦克大战是一款经典的实战项目,它能够帮助开发者提升游戏开发技能,理解面向对象编程、图形界面设计以及事件处理等核心概念。本篇文章将深入探讨使用Java语言开发坦克...