ArrayList和Vector区别及源码

时间:2023-04-03 12:19:50

本文基于jdk1.7

1.ArrayList

ArrayList和Vector区别及源码

                      类图来自:作者 Java3y

源码分析:

1.1 属性

ArrayList和Vector区别及源码

1.2 构造方法

ArrayList和Vector区别及源码

ArrayList和Vector区别及源码

Arrays.copyOf源码:

ArrayList和Vector区别及源码

1.3 trimToSize方法, 修改当前 ArrayList实例的容量为存入的实际值数量的大小。

ArrayList和Vector区别及源码

1.4 扩容方法,以确保它可以至少保存mincapacity个元素数(扩容原理:以1.5倍进行扩容,使用Array.copyOf复制数组到新的数组,并且使用扩容后的新数组的引用)

ArrayList和Vector区别及源码

1.5 grow扩容算法,增加原来的1.5倍

ArrayList和Vector区别及源码

1.5 add 向ArrayList中添加元素(一直调用系统方法插入元素,所以特别消耗资源)

ArrayList和Vector区别及源码

ArrayList和Vector区别及源码

 1.6 remove方法

ArrayList和Vector区别及源码

2.Vector

2.1成员变量

ArrayList和Vector区别及源码

2.2 构造方法

ArrayList和Vector区别及源码

2.3 扩容方法

ArrayList和Vector区别及源码

综上所述:

两者之间的区别:

1.ArrayList是线程不安全的,而Vector是线程安全的。

2.ArrayList扩容大小是原来的0.5倍,而Vector是原来的1倍,并且Vector可以设置扩容大小,ArrayList则不可以设置,但是两者都是通过Arrays.copyOf()方法进行扩容的。

3.ArrayList效率高于Vector。

4.两者都可以设置初始数组的大小,