LinkedList原码分析(基于JDK1.6)】的更多相关文章

HashMap 源码分析  基于jdk1.8分析 1:数据结构: transient Node<K,V>[] table;  //这里维护了一个 Node的数组结构: 下面看看Node的数据结构,Node是它的一个内部类: static class Node<K,V> implements Map.Entry<K,V> { final int hash;  //hash值 final K key;    //key V value;      //value Node&…
LinkedList概述 ​ LinkedList 是 Java 集合框架中一个重要的实现,我们先简述一下LinkedList的一些特点: LinkedList底层采用的双向链表结构: LinkedList支持空值和重复值(List的特点): LinkedList实现Deque接口,具有双端队列的特性,也可以作为栈来使用: LinkedList存储元素过程中,无需像 ArrayList 那样进行扩容,但存储元素的节点需要额外的空间存储前驱和后继的引用: LinkedList在链表头部和尾部插入效…
CopyOnWriteArrayList  源码分析: 1:成员属性: final transient ReentrantLock lock = new ReentrantLock();  //内部是通过ReentrantLock来保证线程安全的,通过一个非公平锁 private transient volatile Object[] array;  维护一个Object数组 2:构造方法  初始化一个长度为0 的Object数组  new Object[0] public CopyOnWrit…
1.初始化 public LinkedList() { } 并未开辟任何类似于数组一样的存储空间,那么链表是如何存储元素的呢? 2.Node类型 存储到链表中的元素会被封装为一个Node类型的结点.并且链表只需记录第一个结点的位置和最后一个结点的位置.然后每一个结点,前后连接,就可以串起来变成一整个链表. transient Node<E> first;//指向链表的第一个结点 transient Node<E> last;//指向链表的最后一个结点 //LinkedList中有一…
hashMap数据结构 类注释 HashMap的几个重要的字段 hash和tableSizeFor方法 HashMap的数据结构 由上图可知,HashMap的基本数据结构是数组和单向链表或红黑树. 以下内容翻译于HashMap类的注释 HashMap是map接口的基础实现类.这个实现提供了所有可选的Map接口操作.并且允许null键和null值.HashMap类和Hashtable类差不多,只是HashMap不是线程完全的,并且HashMap允许null值和null键.这个类不保证map元素的顺…
1.初始化 transient Object[] elementData; //实际存储元素的数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; public ArrayList() { //初始化为一个默认的空数组 this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } 2. 添加元素 private static final int DEFAU…
1:数据结构: transient Object[] elementData;  //说明内部维护的数据结构是一个Object[] 数组 成员属性: private static final int DEFAULT_CAPACITY = 10; private static final Object[] EMPTY_ELEMENTDATA = {};  //空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA =…
上篇我们分析了ArrayList的底层实现,知道了ArrayList底层是基于数组实现的,因此具有查找修改快而插入删除慢的特点.本篇介绍的LinkedList是List接口的另一种实现,它的底层是基于双向链表实现的,因此它具有插入删除快而查找修改慢的特点,此外,通过对双向链表的操作还可以实现队列和栈的功能.LinkedList的底层结构如下图所示. F表示头结点引用,L表示尾结点引用,链表的每个结点都有三个元素,分别是前继结点引用(P),结点元素的值(E),后继结点的引用(N).结点由内部类No…
上一章学习了ArrayList,并分析了其源码,这一章我们将对LinkedList的具体实现进行详细的学习.依然遵循上一章的步骤,先对LinkedList有个整体的认识,然后学习它的源码,深入剖析LinkedList. LinkedList简介 首先看看LinkedList与Collection的关系: LinkedList的继承关系如下: java.lang.Object ↳ java.util.AbstractCollection<E> ↳ java.util.AbstractList&l…
java集合系列之LinkedList源码分析 LinkedList数据结构简介 LinkedList底层是通过双端双向链表实现的,其基本数据结构如下,每一个节点类为Node对象,每个Node节点包含该节点的数据和分别指向前一个前一个和后一个节点的引用.LinkedList内部维护两个成员变量first和last,分别指向链表的头节点和尾节点(接下来的成员变量介绍中会提到).由于LinkedList基于链表,因此查询速度慢,增删速度快,又因为链表为双端双向,因此可进行双向遍历. 其实对Linke…