标签:pointer 元素 cap 的区别 which str imp dde color
ArrayList和LinkedList都是实现了List接口的容器类,用于存储一些列引用对象。只观察功能,它们都可以对元素进行增删改查操作,那它们的区别有哪些呢?下面来说一下
ArrayList是基于数组结构实现的,LinkedList是基于链表结构实现的。
private static final Object[] 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. */ private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; /** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffer. Any * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA * will be expanded to DEFAULT_CAPACITY when the first element is added. */ transient Object[] elementData; // non-private to simplify nested class access
transient Node<E> first; /** * Pointer to last node. * Invariant: (first == null && last == null) || * (last.next == null && last.item != null) */ transient Node<E> last; /** * Constructs an empty list. */
ArrayList集合中使用get()方法获取元素是通过直接读取下标实现的,复杂度为O(1)。而LinkedList中get()方法需要从头结点开始依次遍历,复杂度为O(n)
ArrayList中被删除的元素后面的元素需要逐个移动,复杂度为O(n)。LinkedList直接指针指向操作,复杂度O(1)
ArrayList在使用的时候默认的初始化对象数组的大小长度为10,如果空间不足则会采用2倍的形式进行容量的扩充,如果保存大数据量的时候有可能造成垃圾的产生和性能的下降,但是这个时候可以使用LinkedList保存
ArrayList使用在查询比较多,但是插入和删除比较少的情况,而LinkedList用在查询比较少而插入删除比较多的情况
标签:pointer 元素 cap 的区别 which str imp dde color
原文地址:https://www.cnblogs.com/wulianjie/p/12393126.html