ArrayList
ArrayList是集合的一种实现,实现了List接口,List接口继承了Collection接口。Collection是所有集合类的父类。ArrayList中的元素有序、可重复、可为空
ArrayList的底层是动态数组,是线程不安全的
LinkedList
LinkedList底层是双向链表,实现了list接口,LinkedList是非线程安全的,LinkedList元素允许为null,允许重复元素。
LinkedList是基于链表实现的,因此插入删除效率高,查找效率低,也不存在容量不足的问题,所以没有扩容的方法
ArrayList 与 LinkedList的区别?
- ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表结构
- 对于随机访问get和set,ArrayList绝对优于LinkedList,因为LinkedList要移动指针
- ArrayList默认初始大小为10,默认扩容大小为1.5倍;LinkedList将元素添加到链表的末尾,无须扩容
- ArrayList查询快, 对于添加和删除操作,ArrayList需要移动数据,因此增删慢
- LinkedList查询慢,添加和删除快