(注意:本文基於JDK1.8)
Vector與ArrayList不同,Vector是線程安全的線性表容器,Vector底層同樣基於數組持有元素,雖然Vector在實際項目中根本不會再使用了,但是它的實現方式仍然值得我們學習,通過學習Vector的缺點可以讓我們避免犯同樣的錯誤……所以求職時Vector也是高頻面試題……
1、Vector的增刪改查方法均由synchronized修飾,這意味着在同一時刻只能有一個線程訪問這些方法,其他線程會處於阻塞狀態,這保證了作爲共享變量的底層數組的線程安全
2、Vector早在JDK1.0就發佈給用戶,而ArrayList則是JDK1.2才發佈的
3、Vector底層數組的容量默認爲10
4、Vector的擴容算法默認是1倍(擴容的增量也可自定義數量)
5、Vector的類結構
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{ }
a、繼承AbstractList
b、實現List,代表具備線性表的功能
c、實現RandomAccess,支持隨機訪問功能,即支持下標訪問
d、實現Cloneable,支持clone()對象
e、實現java.io.Serializable,支持序列化,歐耶
6、遍歷方式
a、for循環 通過下標
b、foreach方式
c、Iterator方式
d、Enumeration方式