`

LinkedList源码解析

阅读更多

先从上图了解一下什么是双循环链表,什么是源码中的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源码解析1

    第三章 LinkedList源码解析一、对于LinkedList需要掌握的八点内容LinkedList的创建:即构造器往LinkedList中添加对象:即add

    LinkedList 部分源码

    LinkedList的部分源码解析 包括部分常用的方法: add() ,remove(),get(),set()

    源码解析jdk7.0集合:LinkedList的底层实现原理.pdf

    源码解析jdk7.0集合:LinkedList的底层实现原理.pdf

    Java基于JDK 1.8的LinkedList源码详析

    主要给大家介绍了关于Java基于JDK 1.8的LinkedList源码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java集合系列之LinkedList源码分析

    主要为大家详细介绍了Java集合系列之LinkedList源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java源码解析LinkedList

    今天小编就为大家分享一篇关于Java源码解析LinkedList,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Jdk1.6 Collections Framework源码解析(2)-LinkedList

    NULL 博文链接:https://brokendreams.iteye.com/blog/1916061

    集合类底层源码解析汇总

    java所有集合类底层源码解析汇总,包括ArrayList、HashMap、HashSet、LinkedList、TreeMap、HashSet、ConcurrentHashMap等集合框架的底层实现源码大白话解读。

    Java中的ArrayList的底层源码解读、LinkedList、Vector的区别介绍

    能学到什么:ArrayList的源码分析,自动扩容和自动缩容的源码分析,相关参数的深度解析,从是什么,为什么,怎么做三个角度进行讲解,用通俗易懂的白话进行介绍,LinkedList和Vector以及ArrayList的区别以及使用场景...

    java——ArrayList-源码解析.docx

    ArrayList是list接口下一个底层用数组实现的典型list类,也就是传说中的动态数组,用MSDN的说法就是array的复杂版本,它提供了动态的增加和减少元素...相对于LinkedList来说,ArrayList的特点是查询数据快,增删数据慢

    java8源码-csn-list:ArrayList、LinkedList、Vector、Stack源码分析

    List相关实现类的源码解析(JDK1.8) 2018.9.22- List的架构图 ArrayList 继承关系: ArrayList -&gt; AbstractList 实现 List接口 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态...

    JDK-s-source-parser:解析jdk源码-源码解析

    JDK-s-source-parser ## Java的JDK原始解析###完成部分Collection / ArrayList.java由:me 2016-3-31 Collection / LinkedList.java发布者:CBQ 2016-4-4

    java8集合源码分析-CollectionDemo:自己复习集合框架时候的例子

    集合源码分析 java基础复习 [TOC] 一、集合 1.Iterator 2.Collection 2.1 List---&gt;有序、有索引、元素可重复 1.ArrayList: 底层是数组结构、查询快、增删慢、不同步 添加第一个元素的时候,创建默认个数是10个,...

    siftjava源码-MaoDataStructures:Arrays(数组)、Stacks(栈)、Queues(队列)、LinkedList

    Arrays(数组)、Stacks(栈)、Queues(队列)、LinkedList(链表)、Recursion(递归思想)、BinarySearchTree(二分搜索树)、Set(集合)、Map(映射)、Heap(堆)、PriorityQueue(优先队列)、SegmentTree(线段树)、Trie(字典树)...

    安卓毕业设计app项目源码6-android-interviewer:安卓面试官

    安卓毕业设计app项目源码6 2018android 1.请写出ArrayList,LinkedList,HashMap之间的区别和联系 本题侧重与对android集合框架的认识程度 这里进行解析 java集合框架Collection collection是集合框架的根,定义了集合...

    java8看不到源码-htl-examples:AEMHTL示例

    看不到源码htl-例子 AEM 兼容性 该软件包仅与 AEM6.4 SP2 及更高版本兼容。 它使用 OSGi r7 注释和 HTL 1.4 语法。 使用aem核心组件: aem acs 通讯: 包含的例子 OSGi r7 注释的使用示例 HTL 1.4 语法的一些示例...

    java基础案例与开发详解案例源码全

    2.3.5 常见错误解析24 2.4 Java类库组织结构和文档27 2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32 3.1.3 变量的声明和赋值33...

    JAVA 范例大全 光盘 资源

    实例66 栈和队列(运用LinkedList) 157 实例67 电视频道(运用集的相关类) 162 实例68 植物种类(运用映射的相关类) 165 实例69 不重复的随机数序列 168 实例70 读写Properties文件 170 实例71 配置...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段46讲、ClassLoader链接阶段(验证,准备,解析)过程详细介绍.mp4 │ 高并发编程第二阶段47讲、ClassLoader初始化阶段详细介绍clinit.mp4 │ 高并发编程第二阶段48讲、JVM内置三大类加载器...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段46讲、ClassLoader链接阶段(验证,准备,解析)过程详细介绍.mp4 │ 高并发编程第二阶段47讲、ClassLoader初始化阶段详细介绍clinit.mp4 │ 高并发编程第二阶段48讲、JVM内置三大类加载器...

Global site tag (gtag.js) - Google Analytics