分析一下ArrayList和LinkedList.
先看看ArrayList,它底层是用数组实现的
private static final int DEFAULT_CAPACITY = 10;//默认初始容量 private static final Object[] EMPTY_ELEMENTDATA = {};//当用户指定该ArrayList容量为0时,返回该空数组 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};//new ArrayList时,返回这个空数组 transient Object[] elementData; //用该数组保存数据, ArrayList 的容量就是该数组的长度 private int size;//ArrayList实际存储的数据数量
LinkedList,它底层是用链表实现的
transient int size = 0;//记录链表长度 transient Node<E> first;//链表头结点 transient Node<E> last;//链表尾节点
private static class Node<E> { E item; //链表实际存的数据 Node<E> next; //链表的下一个节点 Node<E> prev; //链表的上一个节点 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }