publicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable{privatestaticfinallong serialVersionUID =8683452581122892189L;/**
* Default initial capacity.
*/privatestaticfinalint DEFAULT_CAPACITY =10;/**
* Shared empty array instance used for empty instances.
*/privatestaticfinalObject[] EMPTY_ELEMENTDATA ={};/**
* Shared empty array instance used for default sized empty instances. We
* distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when
* first element is added.
*/privatestaticfinalObject[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA ={};/**
* The maximum size of array to allocate.
* Some VMs reserve some header words in an array.
* Attempts to allocate larger arrays may result in
* OutOfMemoryError: Requested array size exceeds VM limit
*/privatestaticfinalint MAX_ARRAY_SIZE =Integer.MAX_VALUE -8;
LinkedList底层是一个双向链表,初始容量是0,扩容只需新建节点进行指针指向即可。
底层源码:
publicclassLinkedList<E>extendsAbstractSequentialList<E>implementsList<E>,Deque<E>,Cloneable,java.io.Serializable{transientint size =0;/**
* Pointer to first node.
* Invariant: (first == null && last == null) ||
* (first.prev == null && first.item != null)
*/transientNode<E> first;/**
* Pointer to last node.
* Invariant: (first == null && last == null) ||
* (last.next == null && last.item != null)
*/transientNode<E> last;/**
* Constructs an empty list.
*/publicLinkedList(){}