Hierarchy以下:數組
該類的主要方法以下圖所示:安全
三個protect字段函數
capacityIncrement:每次數組擴充的個數,若是爲0,新容量是原來的2倍, 若是不爲0,新容量爲原來的容量加上此長度,代碼體如今:spa
elementCount : 數組中元素的個數。
elementData:爲該Vector的實現數組。線程
含有兩個參數的構造函數:對象
initialCapacity表明該數組的初始化長度,capacityIncrement表明該數組滿後的擴張因子。索引
含有一個參數的構造函數:
此時capacityIncrement爲0ci
不含參數的構造函數:
此時的initialCapacity爲10 capacityIncrement爲0element
構造參數類型爲Collection的構造函數
rem
add(E e):向該Vector中添加一元素
此方法是線程安全的,在給數組新的index賦值前會調用ensureCapacityHelper方法,保證改數組的容量在佔滿時擴充爲新的數組。
擴充爲新數組的調用的是
此方法爲native方法,依賴於具體的JVM實現。
add(int index, E element):在指定的位置插入元素
此時 該index位置的元素向後移動,而後把obj插入index,這樣便影響了效率,該方法一樣要檢查內部數組是否須要擴張。
addAll(int index, Collection<? extends E> c):
將原來index處元素向右移動c.toArray().length個長度,而後將c中的元素複製到elementData數組中。
addAll(Collection<? extends E> c):
將c中的元素依次複製到elementData數組中(線程安全)
addElement(E obj):
添加一個元素。
capacity():
返回該內部數組的長度。
clear():
清空該Vector。
clone():
經過該Vector克隆一個新的Vector,該克隆爲淺拷貝。
contains(Object o):
判斷該Vector是否含有某對象o
containsAll(Collection<?> c):
調用父類AbstractCollection<E>的containsAll(Collection<?> c)的方法。
copyInto(Object[] anArray):
將該Vector中的元素拷貝至anArray中。
elementAt(int index):
獲取索引爲index位置的元素。
elements():
返回該Vector的枚舉表示。
firstElement():
返回該集合的第一個元素。
get(int index):
根據索引找到指定的元素。
insertElementAt(E obj, int index):
在指定的位置插入某元素。
isEmpty():
判斷該集合是否爲空。
lastElement():
該集合的最後一個元素。
lastIndexOf(Object o, int index):
從該集合的index位置向前查找第一次出現該o的索引。
remove(int index):
刪除該index處的元素,同時後面的元素向前移動,這樣會消耗必定的時間。
remove(Object o):
從該集合中刪除特定的o,可是隻會刪除第一次出現的這個o,同時後面的依次向左移動。
removeAll(Collection<?> c):
從該集合中刪除c中含有的元素。
removeRange(int fromIndex, int toIndex):
移除fromIndex到toIndex之間的元素,同時後面的元素左移,空的set爲null以便GC回收。
retainAll(Collection<?> c):
刪除該集合中含有c集合中的元素。
set(int index, E element):
將指定的index位置設置爲element,不涉及到先後元素的移動。
setSize(int newSize):
改變該集合的容量。
size():
返回該集合的大小。
subList(int fromIndex, int toIndex):
返回該集合的子集合。
toArray() :
返回該集合的Object數組表示。
toArray(T[] a):
返回該集合的特定的數組表示。
trimToSize():
縮小容量,剛好撐得下該集合中的元素。
總結:
該集合中的全部方法都是線程安全的,保證了狀態一致性可是犧牲了運行效率。
根據索引獲取元素很快,按索引刪除元素要涉及到後續元素的向前移動,根據對象刪除的話還須要先查到該
元素在集合中的索引,查找某一元素速度相對快些。插入快,刪除相對慢,查找相對快。