【java集合类】ArrayList和LinkedList源码分析(jdk1.8)
前言: ArrayList底层是依靠数组实现的,而LinkedList的实现是含前驱后继节点的双向列表。平时刷题时会经常使用到这两个集合类,这两者的区别在我眼中主要是ArrayList读取节点平均时间复杂度是O(1)级别的,插入删除节点是O(n);LinkedList读取节点时间复杂度是O(n),插入节点是O(1)。 本文记录我对jdk1.8下的ArrayList和LinkedList源码中主要内容的学习。 1、ArrayList 1.1 主要成员变量 1 // 默认容量 2 private static final int DEFAULT_CAPACITY = 10 ; 3 // 空的数组 4 private static final Object[] EMPTY_ELEMENTDATA = {}; 5 6 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 7 // 数据数组 8 transient Object[] elementData; // non-private to simplify nested class access 9 // 当前大小 10 private int size; 主要成员变量如上,最重要的就是size和elementData