teiba

导航

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.两者都可以设置初始数组的大小,

 

posted on 2018-05-13 22:53  teiba  阅读(173)  评论(0编辑  收藏  举报