`

java需要关注的知识点---LinkedList

阅读更多
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
分享到:
评论
1 楼 jiasanshou 2011-11-24  
  

相关推荐

    java需要关注的知识点---好的书本

    "java需要关注的知识点---好的书本"这一主题暗示了我们需要关注那些能帮助我们深入理解Java语言的资源。其中,标签"源码"和"工具"提醒我们不仅要关注理论,还要关注实际应用和开发工具。 首先,学习Java源码是理解...

    java基础教程----精华版

    下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储数据的容器,分为基本类型(如int, double, boolean等)和引用类型(如类、接口、数组)。 - **数据...

    中信java培训资料------第一部分

    【归纳总结shi.doc】可能是对一段时间内学习内容的提炼,包含了关键知识点的梳理,比如类与对象的区别、封装、继承和多态性这面向对象的三大特性,以及异常处理机制和Java内存管理的基本原理,如垃圾回收机制。...

    Java综合性实验----------

    这个实验涵盖了从基础到高级的多个Java知识点,旨在提升对Java语言的理解和应用能力。 首先,让我们关注"JavaCodeAnalyzer.jar"这个文件。这很可能是一个用于分析Java源代码的工具或者库。Java代码分析器通常用于...

    java综合知识点总结-必背.zip

    这份“java综合知识点总结-必背.zip”文件很可能是为了帮助Java学习者或开发者整理和回顾核心概念,以便深入理解和应用。以下是根据标题和描述可能包含的一些关键知识点的详细解释: 1. **基础语法**: - 变量:...

    java面试java-interview-guide-master.zip

    这份"java面试java_interview_guide-master.zip"资源显然是为准备Java面试而设计的,包含了丰富的Java技术知识点和面试常见问题。以下将从Java语言基础、核心特性、集合框架、多线程、网络编程、异常处理、JVM内存...

    JAVA电子教案------入门级java学习资料

    综上所述,这份“JAVA电子教案(谭浩强)”将覆盖以上所有知识点,并可能深入到更多的细节,如异常的具体类型、集合框架的高级用法、IO流的复杂操作以及并发编程的策略等。对于初学者来说,这是一份非常全面且实用的...

    Java面试题大全--new

    以下是根据标题和描述推测的一些可能涵盖的Java知识点: 1. **基础概念** - Java的历史和发展:了解Java的起源、主要版本以及其在软件开发中的应用。 - Java的特点:讨论Java的跨平台性、自动内存管理、面向对象...

    java 的试题------

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而...以上知识点构成了Java程序员应掌握的基本技能,无论是初学者还是经验丰富的开发者,都需要不断地学习和实践以提升自己的Java技术水平。

    learning-java-introduction-real-world-programming-5th.rar

    该书详细介绍了Java语言的基础知识以及如何将其应用于实际开发场景。第五版更新了最新的Java技术,确保读者能够掌握当前版本的Java编程技能。 Java是一种广泛应用的面向对象的编程语言,由Sun Microsystems(现为...

    JAVA 编程 API基础 JAVA开发平台,JAVA编程资源----JAVA API.zip

    在这里,我们可以讨论几个关键的Java API知识点: 1. **Java核心类库**:Java API的核心类库包括`java.lang`、`java.util`、`java.io`、`java.net`等。`java.lang`是最基本的包,包含所有Java程序都会用到的类,如`...

    java私塾面试题----JAVA基础1.rar

    以上是Java私塾面试题集中的核心知识点,掌握这些内容对于理解Java基础至关重要。通过解答这些问题,可以有效地评估并提高个人的Java编程技能。在实际面试中,应答者不仅需要知道答案,还需要能够解释原理,给出实例...

    【Java核心知识面试】-阿里Java面试集锦.zip

    这份面试集锦全面地覆盖了Java开发中的关键知识点,不仅适合准备面试的开发者,也适用于希望巩固和提升自身Java技能的在职工程师。通过深入学习和理解这些内容,将有助于在实际工作中更好地解决问题和优化代码。

    Javanotes7-web-site

    在《Javanotes7-web-site》中,读者将学习到以下关键知识点: 1. **Java基础语法**:包括数据类型(如整型、浮点型、字符型和布尔型)、变量声明、运算符、控制结构(如条件语句和循环)、数组和字符串的使用。 2....

    java全部知识点总结文档

    Java作为一门广泛使用的编程语言,拥有众多的知识点和应用领域。这份"java全部知识点总结文档"涵盖了Java的基础、进阶以及与其他技术的结合,如PHP和Android开发。下面,我们将详细探讨Java的主要知识点。 1. **...

    Java Learning Path---资源篇

    下面,我们将详细探讨Java学习中的关键知识点,并推荐一些可能在资源包中找到的学习路径。 首先,Java基础是所有学习的起点。理解面向对象编程的概念,如类、对象、封装、继承和多态,是必不可少的。你需要掌握基本...

    android-java-前端-面经-工具集合

    1. **Java知识**: - **基础概念**:包括Java语言特性,如封装、继承、多态,以及面向对象编程的基本原理。 - **内存管理**:深入理解JVM(Java虚拟机),包括堆内存、栈内存、方法区的结构与管理,垃圾回收机制。...

    聊天室------java编写----多人聊天

    总的来说,这个Java聊天室项目涵盖了以下知识点: 1. Java基础:包括面向对象编程概念、类和对象的创建、方法定义等。 2. Java网络编程:使用Socket进行客户端和服务器端的通信,处理输入输出流。 3. 多线程:处理...

    java面试题-----

    【Java面试知识点详解】 1. **面向对象的特征** - **抽象**:抽象是将复杂的现实问题简化,关注核心特性,忽略不重要的细节。它包括过程抽象(封装方法)和数据抽象(封装数据)。 - **继承**:继承是类之间的...

    java-集合-知识点汇总

    Java集合的知识点汇总将会涵盖Java集合的基本概念、类型、实现、操作和注意事项等方面。 Java集合的基本概念 Java集合是Java语言中的一种数据结构,用于存储和操作数据。Java集合可以存储多个元素,每个元素可以是...

Global site tag (gtag.js) - Google Analytics