List
List(列表)
List的元素以现行方式存储,可以存放重复对象,List主要有两个实现类
- ArrayList:长度可变的数组,可以对元素进行随机访问,插入删除元素速度慢,JDK8中的ArrayList扩容是通过grow()方法里使用语句newCapacity = oldCapacity + (oldCapacity >> 1)(即1.5倍扩容)计算容量,然后调用Arrays.copyof()方法进行对原数组进行复制。
- LinkedList:次用链表数据结构,插入和删除速度快,但访问速度慢。
ArrayList和LinkedList的区别
- ArrayList实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
- 随机访问的get和set,ArrayList优于LinkedList,因为LinkedList要移动指针
- 新增和删除操作add和remove,LinkedList优于ArrayList,因为ArrayList要移动数据
- 同步性
ArrayList和Vector的区别
- 同步性
Vector方法之间是线程同步的(线程安全),ArrayList是线程不同步(线程不安全),单线程情况下使用ArrayList,效率高一点,多线程使用Vector,线程安全
2.数据增长
扩容时Vector默认增长为原来的两倍,可以设置增长的空间大小
ArrayList没有提供设置增长空间的方法,源代码是增长为原来的1.5倍
Array和ArrayList的区别
Aarray可以包含基本数据类型和引用类型,ArrayList只能包含引用类型
ArrayList是基于数组实现的,可以通过内部方法自动调整容量,Array大小不可调整
ArrayList是List接口实现类,比Array支持更多的方法和特性
学习笔记
浙公网安备 33010602011771号