LinkedList是采用双向链表来存储数据:
LinkedList允许插入null的值
双向链表的结构图:
LinkedList的构造函数:
public LinkedList() {
header.next = header.previous = header;
}
LinkedList在构造函数中初始化双向链表的表头header,指定header的上一个和下一个都是自己。
LinkedList的add方法:
public boolean add(E e) {
addBefore(e, header);
return true;
}
在进行插入元素的时候,传入插入元素和header.
LinkedList的addBefore方法:
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插入元素的过程(addBefore方法执行操作的图示):
刚刚开始:
空head:
插入元素第一个元素e:
插入第二个元素e2:
指针指向:
删除已经失效的指针效果图:
插入第三个元素e3:
指针指向:
删除已经失效的指针效果图:
示图中,的2X1表示的是,指针指向e2,不再指向e,所以该指向不存在。
LinkedList 的remove方法:
private E remove(Entry<E> e) {
if (e == header)
throw new NoSuchElementException();
E result = e.element;
e.previous.next = e.next;
e.next.previous = e.previous;
e.next = e.previous = null;
e.element = null;
size--;
modCount++;
return result;
}
删除前:
删除操作:
程序最后设置e.next,e.previous,e.element为null,虚拟机会回收该快 内存。
LinkedList的addFirst方法(在head之后插入元素)。
public void addFirst(E e) {
addBefore(e, header.next);
}
图示:
1:
2:插入后指针效果图:
3:最后效果图:
- 大小: 18.6 KB
- 大小: 5.2 KB
- 大小: 7.7 KB
- 大小: 8.8 KB
- 大小: 12.9 KB
- 大小: 18.4 KB
- 大小: 2.4 KB
- 大小: 18.3 KB
- 大小: 13.6 KB
- 大小: 13.3 KB
- 大小: 18.4 KB
- 大小: 14.7 KB
分享到:
相关推荐
"java需要关注的知识点---好的书本"这一主题暗示了我们需要关注那些能帮助我们深入理解Java语言的资源。其中,标签"源码"和"工具"提醒我们不仅要关注理论,还要关注实际应用和开发工具。 首先,学习Java源码是理解...
下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储数据的容器,分为基本类型(如int, double, boolean等)和引用类型(如类、接口、数组)。 - **数据...
【归纳总结shi.doc】可能是对一段时间内学习内容的提炼,包含了关键知识点的梳理,比如类与对象的区别、封装、继承和多态性这面向对象的三大特性,以及异常处理机制和Java内存管理的基本原理,如垃圾回收机制。...
这个实验涵盖了从基础到高级的多个Java知识点,旨在提升对Java语言的理解和应用能力。 首先,让我们关注"JavaCodeAnalyzer.jar"这个文件。这很可能是一个用于分析Java源代码的工具或者库。Java代码分析器通常用于...
这份“java综合知识点总结-必背.zip”文件很可能是为了帮助Java学习者或开发者整理和回顾核心概念,以便深入理解和应用。以下是根据标题和描述可能包含的一些关键知识点的详细解释: 1. **基础语法**: - 变量:...
这份"java面试java_interview_guide-master.zip"资源显然是为准备Java面试而设计的,包含了丰富的Java技术知识点和面试常见问题。以下将从Java语言基础、核心特性、集合框架、多线程、网络编程、异常处理、JVM内存...
综上所述,这份“JAVA电子教案(谭浩强)”将覆盖以上所有知识点,并可能深入到更多的细节,如异常的具体类型、集合框架的高级用法、IO流的复杂操作以及并发编程的策略等。对于初学者来说,这是一份非常全面且实用的...
以下是根据标题和描述推测的一些可能涵盖的Java知识点: 1. **基础概念** - Java的历史和发展:了解Java的起源、主要版本以及其在软件开发中的应用。 - Java的特点:讨论Java的跨平台性、自动内存管理、面向对象...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而...以上知识点构成了Java程序员应掌握的基本技能,无论是初学者还是经验丰富的开发者,都需要不断地学习和实践以提升自己的Java技术水平。
该书详细介绍了Java语言的基础知识以及如何将其应用于实际开发场景。第五版更新了最新的Java技术,确保读者能够掌握当前版本的Java编程技能。 Java是一种广泛应用的面向对象的编程语言,由Sun Microsystems(现为...
在这里,我们可以讨论几个关键的Java API知识点: 1. **Java核心类库**:Java API的核心类库包括`java.lang`、`java.util`、`java.io`、`java.net`等。`java.lang`是最基本的包,包含所有Java程序都会用到的类,如`...
以上是Java私塾面试题集中的核心知识点,掌握这些内容对于理解Java基础至关重要。通过解答这些问题,可以有效地评估并提高个人的Java编程技能。在实际面试中,应答者不仅需要知道答案,还需要能够解释原理,给出实例...
这份面试集锦全面地覆盖了Java开发中的关键知识点,不仅适合准备面试的开发者,也适用于希望巩固和提升自身Java技能的在职工程师。通过深入学习和理解这些内容,将有助于在实际工作中更好地解决问题和优化代码。
在《Javanotes7-web-site》中,读者将学习到以下关键知识点: 1. **Java基础语法**:包括数据类型(如整型、浮点型、字符型和布尔型)、变量声明、运算符、控制结构(如条件语句和循环)、数组和字符串的使用。 2....
Java作为一门广泛使用的编程语言,拥有众多的知识点和应用领域。这份"java全部知识点总结文档"涵盖了Java的基础、进阶以及与其他技术的结合,如PHP和Android开发。下面,我们将详细探讨Java的主要知识点。 1. **...
下面,我们将详细探讨Java学习中的关键知识点,并推荐一些可能在资源包中找到的学习路径。 首先,Java基础是所有学习的起点。理解面向对象编程的概念,如类、对象、封装、继承和多态,是必不可少的。你需要掌握基本...
1. **Java知识**: - **基础概念**:包括Java语言特性,如封装、继承、多态,以及面向对象编程的基本原理。 - **内存管理**:深入理解JVM(Java虚拟机),包括堆内存、栈内存、方法区的结构与管理,垃圾回收机制。...
总的来说,这个Java聊天室项目涵盖了以下知识点: 1. Java基础:包括面向对象编程概念、类和对象的创建、方法定义等。 2. Java网络编程:使用Socket进行客户端和服务器端的通信,处理输入输出流。 3. 多线程:处理...
【Java面试知识点详解】 1. **面向对象的特征** - **抽象**:抽象是将复杂的现实问题简化,关注核心特性,忽略不重要的细节。它包括过程抽象(封装方法)和数据抽象(封装数据)。 - **继承**:继承是类之间的...
Java集合的知识点汇总将会涵盖Java集合的基本概念、类型、实现、操作和注意事项等方面。 Java集合的基本概念 Java集合是Java语言中的一种数据结构,用于存储和操作数据。Java集合可以存储多个元素,每个元素可以是...