ArrayList和LinkedList在性能上各有优缺点,在时间复杂度和空间复杂度主要体现在他们的数据结构
ArrayList是实现了基于动态数组的数据结构;LinkedList是实现了基于链表的数据结构,是双向链表,有next和previous
总结:
1、对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。
对ArrayList而言,主要是在内部数据添加一项,指向所添加的元素,可能会导致对数据的重新分配
对LinkedList而言,开销是统一的,分配一个内部的Entry对象:
private static class Entry {
Object element;
Entry next;
Entry previous;
}
2、ArrayList中间插入和移除一个元素,则所有的元素都会被移动;起始容量10,增长:新容量=(旧容量*3)/2+1
LinkedList的中间插入或删除一个元素的开销是固定的
3、LinkedList不支持高效的随机元素访问,所以get,set方法在时间复杂度上,LinkedList > ArrayList
4、ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间