集合類--ArrayList和Vector的區別?

解析:碰到這類題目,老師給的建議就是先別和麪試官談區別,而是巧妙的把相同點獻上,再說出區別,讓面試官眼前一亮的感覺。

相同點:
1.都是使用數組來存儲數據的。
2.它們都是有序集合,並且其中的數據允許重複。(可以提及HashSet,因爲HashSet不可以按索引號檢查元素,並且不允許有重複元素。這樣對比有利於說明問題。)
3.都是容量大小動態可變的數組。

不同點:
1.Vector是線程安全的,而ArrayList是線程不安全的。

在談到線程是否安全這裏,我們可以使用一個模板就是:
一旦線程安全,後面就可以說它的方法之間是線程同步的。然後舉一反三。如果只有一個線程會訪問到集合,最好使用線程不安全的那個,因爲不用考慮線程安全,所以執行效率要高。而多個線程訪問集合,最好使用線程安全的那個,這樣不需要程序員再去考慮和編寫線程安全的代碼。

2.ArrayList與Vector都是一個初始的容量大小。如果存儲超過容量,就需要增加存儲空間。
Vector默認增長爲原來的兩倍,從源碼看ArrayList增長爲原來的1.5倍。Vector有設計增長空間的方法,而Vector沒有。
3.Vector可以設置增長的空間大小,而ArrayList沒有提供設置增長空間的方法。
本文並非全部原創,根據資料和自己的見解進行總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章