ArrayList和LinkedList均实现了List接口。两者区别如下:
1、数据结构不同:ArrayList是基于Array(动态数组)的数据结构,LinkedList基于Link(链表)的数据结构。
2、自由性不同:数组初始化必须指定初始化的长度,否则报错,所以大小固定,不适合动态存储,动态添加。
链表自由性高,大小可变, 扩展性强。
3、增删、查询效率不同:
随机访问List(get和set操作)时,ArrayList内存为连续的地址,可随机访问, 查询速度快;LinkedList是线性存储,只能从前往后移动指针依次查找,速度较慢。
新增和删除List(add和remove操作)时,ArrayList操作点后边所有数据的下标索引都会造成影响,需要把后面所有的数据进行移动,LinkedList效率更高
4、存储空间开销不同:
ArrayList的主要开销在于数据需要在list列表中预留一定的空间;而LinkedList主要空间开销在于需要存储结点信息及结点指针信息