联系:
ArrayList和LinkedList都是List接口的实现类,而List接口继承自Collection接口。
Collection是java.util包提供的集合类,它是除Map外所有其他集合类的根接口。
区别:
1、
Arraylist是以动态数组作为存储结构的;
LinkedList是以Link链表作为存储结构;
2、
ArrayList的查找效率很高,因为它底层是数组,故随机访问List的效率较好;
LinkedList是线性的数据存储方式,所以是需要移动指针从前往后依次查找的;
3、
当对数据进行增加和删除的操作时(add和remove),LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后的数据的下标索引造成影响,需要进行数据的移动;
4、
ArrayList是需要手动的设置固定大小的容量,初始是0,当创建第一个对象时,它会变成10,当存放的size大于数组长度时,他会以1.5倍的方式扩容,但是使用比较方便;
LinkedList时不需要设置容量的大小,LinkedList的自由性较高,能够随着数据量的变化而变化,但是他不便于使用;
5、
ArrayList主要控件开销在于需要给List列表预留一定的空间,这是ArrayList的唯一开销;
LinkedList的主要控件开销是在于需要给存储节点的信息以及结点指针信息;
总结:
使用ArrayList:频繁访问列表中的某一个元素以及只需要在列表末尾进行添加和删除元素;
使用LinkedList:需要通过循环跌代来访问列表中的某些元素以及需要频繁的在列表开头、中间、末尾等元素操作。