這兩天看書兩遇到這個類,索性把這個類整理一下來研究研究。看看API中對Vector的描述。
java.lang.Object
|
+----java.util.Vector
- public class Vector
- extends Object
- implements Cloneable, Serializable
- 下列類的父類:
- Stack
Vector
類實現了可動態擴充的對象數組。類似數組,它包含的元素可通過數組下標來訪問。但是,在 Vector
創建之后。Vector
可根據增加和刪除元素的需要來擴大或縮小。
每個向量可通過維護 capacity
和 capacityIncrement
來優化存儲空間的管理。capacity
至少和向量大小一樣大;但它通常會更大些,因為向量會添加組件,向量的存儲空間會根據 capacityIncrement
增加。應用在插入大數量的組件之前會增加向量的容量;這減少了再分配的數量。
變量索引
- capacityIncrement
- 當向量的大小超過它的容量時的向量容量的自動增加量。
- elementCount
- 向量中的有效元素數。
- elementData
- 存儲向量中元素的數組緩沖區。
構造子索引
- Vector()
- 構造一個空向量。
- Vector(int)
- 用指定的初始化容量構造一個空向量。
- Vector(int, int)
- 用指定的初始化容量和容量增量構造一個空向量。
方法索引
- addElement(Object)
- 在向量尾部添加一個指定組件,并把它的長度加一。
- capacity()
- 返回當前向量的容量。
- clone()
- 返回該向量的一個 clone 。
- contains(Object)
- 測試指定對象是否該向量的一個元素。
- copyInto(Object[])
- 把該向量的元素復制到指定數組中。
- elementAt(int)
- 返回指定下標處的組件。
- elements()
- 返回該向量的元素的一個枚舉。
- ensureCapacity(int)
- 增加向量容量,必要的話,保證它至少能容納由最小容量參數指定的組件數。
- firstElement()
- 返回該向量的第一個元素。
- indexOf(Object)
- 查找給定參數在向量中第一次出現的位置,并用
equals
方法測試它們是否相等。 - indexOf(Object, int)
- 從
index
處開始查找給定參數在向量中第一次出現的位置,并用 equals
方法測試它們是否相等。 - insertElementAt(Object, int)
- 在指定的
index
處插入作為該向量元素的指定對象。 - isEmpty()
- 測試該向量是否無元素。
- lastElement()
- 返回向量的最后一個元素。
- lastIndexOf(Object)
- 返回向量中最后出現的指定對象的下標。
- lastIndexOf(Object, int)
- 從指定的下標向后查找指定的對象,并返回它的下標。
- removeAllElements()
- 刪除向量的所有元素并把它的大小置為零。
- removeElement(Object)
- 從向量中刪除第一個出現的參數。
- removeElementAt(int)
- 刪除指定下標處的元素。
- setElementAt(Object, int)
- 設置在向量中指定的
index
處的元素為指定的對象。 - setSize(int)
- 設置向量的大小。
- size()
- 返回該向量的元素數。
- toString()
- 返回該向量的字符串表示。
- trimToSize()
- 把該向量的容量調整為向量的當前大小。
變量
elementData protected Object elementData[]
- 存儲向量中的元素的數組緩沖區。向量的容量就是該數組緩沖區的長度。
elementCount protected int elementCount
- 向量中的有效元素數。
capacityIncrement protected int capacityIncrement
- 當向量大小超過它的容量時的向量容量的自動增加量。如果容量增量為
0
, 向量的容量在每次需要增加時會擴充一倍。
構造子
Vector public Vector(int initialCapacity,
int capacityIncrement)
- 用指定的初始化容量和容量增量構造一個空向量。
- 參數:
- initialCapacity - 向量的初始容量。
- capacityIncrement - 當向量溢出時容量的增長量。
Vector public Vector(int initialCapacity)
- 用指定的初始化容量構造一個空向量。
- 參數:
- initialCapacity - 向量的初始容量。
Vector public Vector()
- 構造一個空向量。
方法
copyInto public final synchronized void copyInto(Object anArray[])
- 把該向量的元素復制到指定數組中。 數組必須足夠大到可容納向量中的所有對象。
- 參數:
- anArray - 放復制元素的數組。
trimToSize public final synchronized void trimToSize()
- 把該向量的容量調整為向量的當前大小。應用可使用該操作最小化向量存儲空間。
ensureCapacity public final synchronized void ensureCapacity(int minCapacity)
- 增加向量容量,必要的話,保證它至少能容納由最小容量參數指定的組件數。
- 參數:
- minCapacity - 要求的最小容量。
setSize public final synchronized void setSize(int newSize)
- 設置向量的大小。 如果新大小大于當前大小,則新的
null
項添加到向量尾部。如果新的大小小于當前大小,所有下標大于或等于 newSize
的元素將被拋棄。 - 參數:
- newSize - 向量的新大小。
capacity public final int capacity()
- 返回該向量的當前容量。
- 返回值:
- 該向量的當前容量。
size public final int size()
- 返回該向量的元素數。
- 返回值:
- 該向量的元素數。
isEmpty public final boolean isEmpty()
- 測試該向量是否無元素。
- 返回值:
- 如果該向量無元素,返回
true
;反之返回 false
。
elements public final synchronized Enumeration elements()
- 返回該向量的元素的一個枚舉。
- 返回值:
- 該向量的元素的一個枚舉。
- 參見:
- Enumeration
contains public final boolean contains(Object elem)
- 測試指定對象是該向量的一個元素。
- 參數:
- elem - 一個對象。
- 返回值:
- 如果指定對象是該向量中的一個元素,則返回
true
;否則返回 false
。
indexOf public final int indexOf(Object elem)
- 查找給定參數在向量中第一次出現的位置,并用
equals
方法測試它們是否相等。 - 參數:
- elem - 一個對象。
- 返回值:
- 參數在向量中第一次出現處的下標;如果該對象未找到,則返回
-1
。 - 參見:
- equals
indexOf public final synchronized int indexOf(Object elem,
int index)
- 從
index
處開始查找給定參數在向量中第一次出現的位置,并用 equals
方法測試它們是否相等。 - 參數:
- elem - 一個對象。
- index - 開始查找的位置的下標。
- 返回值:
- 參數在向量中的
index
處或在它之后第一次出現的位置的下標;如果該對象未找到,則返回 -1
。 - 參見:
- equals
lastIndexOf public final int lastIndexOf(Object elem)
- 返回向量中最后出現的指定對象的下標。
- 參數:
- elem - 指定的元素。
- 返回值:
- 指定對象在向量中最后一次出現處的下標;如果該對象未找到,則返回
-1
。
lastIndexOf public final synchronized int lastIndexOf(Object elem,
int index)
- 從指定的下標向后查找指定的對象,并返回它的下標。
- 參數:
- elem - 指定的元素。
- index - 開始查找的位置的下標。
- 返回值:
- 指定對象在向量中的
index
處或在它之后第一次出現的位置的下標;如果該對象未找到,則返回 -1
。
elementAt public final synchronized Object elementAt(int index)
- 返回指定下標處的組件。
- 參數:
- index - 向量中的一個下標。
- 返回值:
- 指定下標處的元素。
- 拋出: ArrayIndexOutOfBoundsException
- 如果給出無效的下標。
firstElement public final synchronized Object firstElement()
- 返回該向量的第一個元素。
- 返回值:
- 該向量的第一個元素。
- 拋出: NoSuchElementException
- 如果該向量沒有元素。
lastElement public final synchronized Object lastElement()
- 返回向量的最后一個元素。
- 返回值:
- 向量的最后一個元素,即在下標
size() - 1
處的元素。 - 拋出: NoSuchElementException
- 如果該向量為空。
setElementAt public final synchronized void setElementAt(Object obj,
int index)
- 設置在向量中指定的
index
處的元素為指定的對象。 在該位置的先前元素被拋棄。 下標值必須大于或等于0
,并且小于向量的當前大小。
- 參數:
- obj - 元素被設置成的那個對象。
- index - 指定下標。
- 拋出: ArrayIndexOutOfBoundsException
- 如果下標無效。
- 參見:
- size
removeElementAt public final synchronized void removeElementAt(int index)
- 刪除指定下標處的元素。 在該向量中下標大于或等于
index
的元素的下標值減一。 下標值必須大于或等于0
,并且小于向量的當前大小。
- 參數:
- index - 要刪除對象的下標。
- 拋出: ArrayIndexOutOfBoundsException
- 如果下標無效。
- 參見:
- size
insertElementAt public final synchronized void insertElementAt(Object obj,
int index)
- 在指定的
index
處插入作為該向量元素的指定對象。 在該向量中下標大于或等于 index
的元素的下標值加一。 下標值必須大于或等于0
,并且小于或等于向量的當前大小。
- 參數:
- obj - 要插入的元素
- index - 插入新元素的位置。
- 拋出: ArrayIndexOutOfBoundsException
- 如果下標無效。
- 參見:
- size
addElement public final synchronized void addElement(Object obj)
- 在向量尾部添加一個指定組件,并把它的長度加一。 當向量大小超過它的容量時向量的容量自動增加。
- 參數:
- obj - 要添加的元素。
removeElement public final synchronized boolean removeElement(Object obj)
- 從向量中刪除第一個出現的參數。 如果在向量中找到該對象,在該向量中下標大于或等于
index
的每個元素的下標值減一。 - 參數:
- obj - 要刪除的元素。
- 返回值:
- 如果參數是向量的一個元素,返回
true
;否則返回 false
。
removeAllElements public final synchronized void removeAllElements()
- 刪除向量的所有元素并把它的大小置為零。
clone public synchronized Object clone()
- 返回該向量的一個副本 。
- 返回值:
- 該向量的一個副本。
- 覆蓋:
- 類 Object 中的 clone
toString public final synchronized String toString()
- 返回該向量的字符串表示。
- 返回值:
- 該向量的字符串表示。
- 覆蓋:
- 類 Object 中的 toString
-
以上的這些是在API中看到的。 Vector 類提供了實現可增長數組的功能,隨著更多元素加入其中,數組變的更大。在刪除一些元素之后,數組變小。
Vector 有三個構造函數:
public Vector(int initialCapacity,int capacityIncrement)
public Vector(int initialCapacity)
public Vector()
Vector 運行時創建一個初始的存儲容量initialCapacity,存儲容量是以capacityIncrement 變量定義的增量增長。初始的存儲容量和capacityIncrement 可以在Vector 的構造函數中定義。第二個構造函數只創建初始存儲容量。第三個構造函數既不指定初始的存儲容量也不指定capacityIncrement。
Vector 類提供的訪問方法支持類似數組運算和與Vector 大小相關的運算。類似數組的運算允許向量中增加,刪除和插入元素。它們也允許測試矢量的內容和檢索指定的元素,與大小相關的運算允許判定字節大小和矢量中元素的數目。
現針對經常用到的對向量增,刪,插功能舉例描述:
addElement(Object obj)
把組件加到向量尾部,同時大小加1,向量容量比以前大1
insertElementAt(Object obj, int index)
把組件加到所定索引處,此后的內容向后移動1 個單位
setElementAt(Object obj, int index)
把組件加到所定索引處,此處的內容被代替。
removeElement(Object obj) 把向量中含有本組件內容移走。
removeAllElements() 把向量中所有組件移走,向量大小為0。
例如:
import java.lang.System;
import java.util.Vector;
import java.util.Emumeration;
public class Avector{
public static void main(String args[]){
Vector v=new Vector();
v.addElement("one");
v.addElement("two");
v.addElement("three");
v.insertElementAt("zero",0);
v.insertElementAt("oop",3);
v.setElementAt("three",3);
v.setElementAt("four",4);
v.removeAllElements();
}
}
-
-
Vector中的變化情況:
1. one 2. one 3. one 4. zero 5. zero 6. zero 7. zero
two two one one one one
three two two two two
three oop three three
three three four