這兩個類都實現了 List 接口(List 接口繼承了 Collection 接口),他們都是有序集合,
即存儲在這兩個集合中的元素的位置都是有順序的,相當於一種動態的數組,我們以后可以
按位置索引號取出某個元素,並且其中的數據是允許重復的。
接着說 ArrayList 與 Vector 的區別,這主要包括兩個方面:
1、同步性:
Vector 是線程安全的,也就是說是它的方法之間是線程同步的,而 ArrayList 是線程
序不安全的,它的方法之間是線程不同步的。如果只有一個線程會訪問到集合,那最好是使
用 ArrayList,因為它不考慮線程安全,效率會高些;如果有多個線程會訪問到集合,那最
好是使用 Vector,因為不需要我們自己再去考慮和編寫線程安全的代碼。
備注:對於 Vector&ArrayList、Hashtable&HashMap,要記住線程安全的問題,記住
Vector 與 Hashtable 是舊的,是 java 一誕生就提供了的,它們是線程安全的,ArrayList
與 HashMap 是 java2 時才提供的,它們是線程不安全的。
2、數據增長:
ArrayList 與 Vector 都有一個初始的容量大小,當存儲進它們里面的元素的個數超過
了容量時,就需要增加 ArrayList 與 Vector 的存儲空間,每次要增加存儲空間時,不是只
增加一個存儲單元,而是增加多個存儲單元,每次增加的存儲單元的個數在內存空間利用與
程序效率之間要取得一定的平衡。Vector 默認增長為原來兩倍,而 ArrayList 的增長為原
來的 1.5 倍。ArrayList 與 Vector 都可以設置初始的空間大小,Vector 還可以設置增長的
空間大小,而 ArrayList 沒有提供設置增長空間的方法。