List的实现类有下面几个:
- ArrayList 数据结构是动态数组
- Vector 数据结构是动态数组
- LinkedList 双向链表
Array和ArrayList有什么区别?
- Array可以容纳基本数据类型和对象,ArrayList只能容纳对象
- Array大小固定,声明数组时候指定大小,不可变;ArrayList指定大小,可以动态扩容。
ArrayList和Vector有什么区别?
- Vector是线程安全的,从源码中可以看出,Vector的许多方法上有synchronized,线程同步,执行效率低。
- 两个都是采用的线性连续空间存储元素,但是当空间不够用的时候,两个类的增长方式是不同的。
- Vector可以指定增长因子,但是ArrayList是不可以的。
ArrayList和LinkedList有什么区别?
- ArrayList的数据结构是基于动态数组的,数据存储是线性连续的,因此一旦存储完毕,数据的位置是固定的,查询效率比较快。因为地址是连续的在插入/删除数据的时候需要重新移动数据,所以插入和删除的效率是低的。
- LinkedList采用的是双向链表,地址是任意的,因此数据在存储的时候是不需要连续的。所以在查询的时候需要移动指针,查询效率比较慢。再插入和删除的时候不要重新移动数据,因此效率比较高。LinkedList适用于头尾操作或插入指定位置的场景。