ArrayList
- 底层结构:是可变数组
- remove()删除元素时候,也需要复制数组,所以效率不高;
- add()方法,当ArrayList容量很大时,效率还是很高的;
- get、set方法效率很高,只需要找到相应的index位置即可;
- 初始化容量:10,但容量超过最大值时,对其进行扩容,默认扩容1.5倍;
- 是否线程安全:线程不安全的;
Vector
- 底层结构:可变数组;
- 方法基本与ArrayList相同;
- 是否线程安全:线程安全的,加了同步锁;(加锁和释放锁都需要消耗资源,因此在单线程中,相对于ArrayList效率低很多)
- 初始化容量:10,Vector默认拓展2倍;
LinkedList
- 底层结构:是双向链表
- 添加和删除操作效率高,
- get、set方法效率很低,需要遍历链表;
- 初始化容量:无
- 是否线程安全:线程不安全;
- 可以用来作为堆、队列结构;