Java Collections Framework之Vector

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():
      
      縮小容量,剛好撐得下該集合中的元素。

      總結:
              該集合中的全部方法都是線程安全的,保證了狀態一致性可是犧牲了運行效率。
              根據索引獲取元素很快,按索引刪除元素要涉及到後續元素的向前移動,根據對象刪除的話還須要先查到該
              元素在集合中的索引,查找某一元素速度相對快些。插入快,刪除相對慢,查找相對快。

相關文章
相關標籤/搜索