ArrayList和Vector区别及源码
本文基于jdk1.7
1.ArrayList
类图来自:作者 Java3y
源码分析:
1.1 属性
1.2 构造方法
Arrays.copyOf源码:
1.3 trimToSize方法, 修改当前 ArrayList实例的容量为存入的实际值数量的大小。
1.4 扩容方法,以确保它可以至少保存mincapacity个元素数(扩容原理:以1.5倍进行扩容,使用Array.copyOf复制数组到新的数组,并且使用扩容后的新数组的引用)
1.5 grow扩容算法,增加原来的1.5倍
1.5 add 向ArrayList中添加元素(一直调用系统方法插入元素,所以特别消耗资源)
1.6 remove方法
2.Vector
2.1成员变量
2.2 构造方法
2.3 扩容方法
综上所述:
两者之间的区别:
1.ArrayList是线程不安全的,而Vector是线程安全的。
2.ArrayList扩容大小是原来的0.5倍,而Vector是原来的1倍,并且Vector可以设置扩容大小,ArrayList则不可以设置,但是两者都是通过Arrays.copyOf()方法进行扩容的。
3.ArrayList效率高于Vector。
4.两者都可以设置初始数组的大小,