`
李宏喜
  • 浏览: 118694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读LinkedList的源代码

 
阅读更多
今天看了一下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 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;
    }

只是在查询某个元素的时候,是从header开始,逐次遍历的

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;
}

这样性能相对较低

难怪Kent Beck提到LinkedList的增加和删除的性能要优于由对象数组实现的ArrayList。

分享到:
评论

相关推荐

    学习Java必须读懂两套源代码

    总之,学习Java必须读懂这两套源代码,这不仅是提升个人技术深度的必要步骤,也是成长为一名专业Java开发者的必经之路。在这个过程中,你会逐渐建立起对Java的深刻认识,提高问题解决能力,为未来的职业发展打下坚实...

    Illustrated C# 2008源代码

    10. **集合与数据结构**:C#提供了丰富的内置集合,如ArrayList、LinkedList、Dictionary等,源代码中会展示如何使用这些集合进行数据存储和操作。 通过分析和学习《Illustrated C# 2008源代码》中的示例,开发者...

    Java程序练习附带源代码

    在这个“Java程序练习附带源代码”的压缩包中,你将找到一系列用于学习和实践Java编程的小型示例项目。这些源代码是深入理解Java语言特性和编程技巧的宝贵资源。 首先,让我们探讨Java程序设计的基础。Java的核心...

    老毕java视频源代码.zip

    源代码是程序的基础,它是由程序员编写的、人可读的文本,包含了程序的所有逻辑和指令。通过查看和分析源代码,学习者可以深入理解程序的工作原理,这对于提升编程技能和解决问题能力至关重要。"老毕java视频源代码...

    java程序设计部分源代码学习

    首先,Java源代码是编程的核心,它是由程序员编写的、可读的文本文件,包含了计算机执行的指令。`.java`文件是源代码文件,通过Java编译器(javac)转换成字节码(`.class`文件),然后由Java虚拟机(JVM)解释执行...

    Java案例开发集锦(第二版)源代码

    在Java编程中,源代码是程序员用人类可读的语言编写的程序文本,通过编译器转换成计算机可执行的机器语言。第二章通常会涉及基础的面向对象编程概念,如类、对象、封装、继承和多态等。通过分析这些源代码,我们可以...

    C#从入门到精通源代码2

    《C#从入门到精通源代码2》是一个学习C#编程语言的重要资源,它包含了多个逐步进阶的示例和项目,旨在帮助初学者和有经验的开发者深化对C#的理解。C#是一种多范式、面向对象的编程语言,由微软开发并广泛应用于...

    Java程序设计使用教程第四版源代码

    Java程序设计是软件开发中的基础课程,而"Java程序设计使用教程第四版源代码"则为学习者提供了实践和理解编程概念的宝贵资源。这个压缩包包含了一系列与Java编程相关的练习和示例代码,涵盖了从基本语法到高级特性的...

    JAVA程序源代码学习借鉴

    首先,源代码是程序的原始形式,它由人类可读的编程语句组成。在Java中,源代码文件通常以`.java`为扩展名。通过阅读这些源代码,我们可以了解不同类型的程序结构,例如类(class)、方法(method)、变量(variable...

    毕向东java基础源代码

    【毕向东Java基础源代码】是一份非常珍贵的学习资源,由知名的IT教育机构黑马程序员的资深讲师毕向东老师提供。这个资源主要包含了他在教授Java基础知识时所使用的示例代码,对于初学者来说,是一个深入理解Java语言...

    JavaSE视频部分配套源代码

    源代码是程序设计中的重要组成部分,它是由程序员编写的、人类可读的文本形式,用于指示计算机执行特定任务。 在学习JavaSE时,源代码的作用不言而喻。它可以让你看到每一行代码是如何实现功能的,从而加深对编程...

    各种java源代码

    "源代码"标签强调了这些是可读的、未编译的程序文本,可以直接在Java集成开发环境(IDE)如Eclipse、IntelliJ IDEA或NetBeans中打开、编辑和运行。通过查看源代码,学习者可以直接看到程序的逻辑结构,理解每一行...

    21天精通java源代码

    源代码是程序设计者用人类可读的语言编写的文本,它包含了程序的所有逻辑和指令。Java源代码通常以`.java`为扩展名,经过编译器转化为字节码(`.class`文件)后,由Java虚拟机执行。因此,精通Java源代码意味着能够...

    JAVA课后答案源代码

    源代码通常指的是程序员用人类可读的语言编写的程序,而这里的".class"文件则是Java编译器将源代码编译后的结果,用于Java虚拟机(JVM)执行。 1. **类和对象**:在Java中,一切皆为对象。如"Rectangle.class"可能...

    绝对经典的JAVA源代码。

    这个压缩包文件的标题——"绝对经典的JAVA源代码",暗示了其中包含了一些具有代表性和学习价值的Java代码示例。这些源代码可能是由经验丰富的开发者编写的,旨在帮助初学者或有经验的程序员深入理解Java语言的核心...

    java初学者学习源代码day01.zip

    源代码是程序员用人类可读的语言编写的程序,它遵循Java语法,包括类定义、方法声明、变量声明等。 - 类(Class)是Java程序的基本构造块,每个.java文件可以包含一个或多个类。在这里,"Ellsworth"可能是一个类的...

    java源代码

    Java源代码是编程领域的核心元素,它是由程序员编写的、以人类可读的形式表示的程序。在Java中,源代码通常以`.java`文件扩展名保存。这些文件包含了按照Java语法编写的一系列类、方法和变量定义,它们是程序运行的...

    C#4.0权威指南 源代码

    《C# 4.0权威指南》是一本深入解析C#编程语言的重量级书籍,其源代码提供了丰富的实例和示例,旨在帮助读者更好地理解和掌握C# 4.0的关键特性和用法。这份资源包含了五个部分的源码,分别在五个不同的RAR文件中,...

    JAVA语言程序设计源代码

    Java源代码文件通常以`.java`为扩展名,它们是人类可读的文本文件,包含了类、方法和其他编程元素的定义。在编译过程中,Java编译器将这些源代码转换为`.class`字节码文件,这是Java虚拟机(JVM)能够理解和执行的...

    VISUALC#.net教程和源代码

    【标题】"VISUALC#.net教程和源代码"涵盖了C#编程语言在.NET框架下的基础知识与实践应用,尤其强调了Visual Studio IDE的使用。这个教程可能是为了帮助初学者和有经验的开发者深入理解C#语言特性以及如何利用它来...

Global site tag (gtag.js) - Google Analytics