|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.Vector<E>
public class Vector<E>
Vector
類別可以實作可增長的物件陣列。與陣列一樣,它包含可以使用整數索引進行存取的元件。但是,Vector
的大小可以根據需要增大或縮小,以適應創建 Vector
後進行添加或移除項的操作。
每個向量會試圖通過維護 capacity
和 capacityIncrement
來優化存儲管理。capacity
始終至少應與向量的大小相等;這個值通常比後者大些,因為隨著將元件添加到向量中,其存儲將按 capacityIncrement
的大小增加存儲塊。應用程序可以在插入大量元件前增加向量的容量;這樣就減少了增加的重分派的量。
由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失敗的:如果在迭代器創建後的任意時間從結構上修改了向量(通過迭代器自身的 remove 或 add 方法之外的任何其他方式),則迭代器將拋出 ConcurrentModificationException。因此,面對共時的修改,迭代器很快就完全失敗,而不是冒著在將來不確定的時間任意發生不確定行為的風險。Vector 的 elements 方法返回的 Enumeration 不是 快速失敗的。
注意,迭代器的快速失敗行為不能得到保證,一般來說,存在不同步的共時修改時,不可能作出任何堅決的保證。快速失敗迭代器盡最大努力拋出 ConcurrentModificationException
。因此,編寫依賴於此異常的程序的方式是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用於檢測 bug。
從 Java 2 平臺 v1.2 開始,此類別改進為可以實作 List
介面,使它成為 Java
Collections Framework 的成員。與新 collection 實作不同,Vector
是同步的。
Collection
,
List
,
ArrayList
,
LinkedList
,
序列化表格欄位摘要 | |
---|---|
protected int |
capacityIncrement
向量的大小大於其容量時,容量自動增加的量。 |
protected int |
elementCount
Vector 物件中的有效元件數。 |
protected Object[] |
elementData
存儲向量元件的陣列緩衝區。 |
從類別 java.util.AbstractList 繼承的欄位 |
---|
modCount |
建構子摘要 | |
---|---|
Vector()
建構一個空向量,使其內部資料陣列的大小為 10 ,其標準容量增量為零。 |
|
Vector(Collection<? extends E> c)
建構一個套件含指定 collection 中的元素的向量,這些元素按其 collection 的迭代器返回元素的順序排列。 |
|
Vector(int initialCapacity)
使用指定的初始容量和等於零的容量增量建構一個空向量。 |
|
Vector(int initialCapacity,
int capacityIncrement)
使用指定的初始容量和容量增量建構一個空的向量。 |
方法摘要 | ||
---|---|---|
boolean |
add(E e)
將指定元素添加到此向量的末尾。 |
|
void |
add(int index,
E element)
在此向量的指定位置插入指定的元素。 |
|
boolean |
addAll(Collection<? extends E> c)
將指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的順序添加這些元素。 |
|
boolean |
addAll(int index,
Collection<? extends E> c)
在指定位置將指定 Collection 中的所有元素插入到此向量中。 |
|
void |
addElement(E obj)
將指定的元件添加到此向量的末尾,將其大小增加 1。 |
|
int |
capacity()
返回此向量的當前容量。 |
|
void |
clear()
從此向量中移除所有元素。 |
|
Object |
clone()
返回向量的一個副本。 |
|
boolean |
contains(Object o)
如果此向量包含指定的元素,則返回 true 。 |
|
boolean |
containsAll(Collection<?> c)
如果此向量包含指定 Collection 中的所有元素,則返回 true。 |
|
void |
copyInto(Object[] anArray)
將此向量的元件複製到指定的陣列中。 |
|
E |
elementAt(int index)
返回指定索引處的元件。 |
|
Enumeration<E> |
elements()
返回此向量的元件的列舉。 |
|
void |
ensureCapacity(int minCapacity)
增加此向量的容量(如有必要),以確保其至少能夠保存最小容量參數指定的元件數。 |
|
boolean |
equals(Object o)
比較指定對象與此向量的相等性。 |
|
E |
firstElement()
返回此向量的第一個元件(位於索引 0 ) 處的項)。 |
|
E |
get(int index)
返回向量中指定位置的元素。 |
|
int |
hashCode()
返回此向量的雜湊碼值。 |
|
int |
indexOf(Object o)
返回此向量中第一次出現的指定元素的索引,如果此向量不包含該元素,則返回 -1。 |
|
int |
indexOf(Object o,
int index)
返回此向量中第一次出現的指定元素的索引,從 index 處正向搜尋,如果未找到該元素,則返回 -1。 |
|
void |
insertElementAt(E obj,
int index)
將指定物件作為此向量中的元件插入到指定的 index 處。 |
|
boolean |
isEmpty()
測試此向量是否不包含元件。 |
|
E |
lastElement()
返回此向量的最後一個元件。 |
|
int |
lastIndexOf(Object o)
返回此向量中最後一次出現的指定元素的索引;如果此向量不包含該元素,則返回 -1。 |
|
int |
lastIndexOf(Object o,
int index)
返回此向量中最後一次出現的指定元素的索引,從 index 處逆向搜尋,如果未找到該元素,則返回 -1。 |
|
E |
remove(int index)
移除此向量中指定位置的元素。 |
|
boolean |
remove(Object o)
移除此向量中指定元素的第一個比對項,如果向量不包含該元素,則元素保持不變。 |
|
boolean |
removeAll(Collection<?> c)
從此向量中移除包含在指定 Collection 中的所有元素。 |
|
void |
removeAllElements()
從此向量中移除全部元件,並將其大小設置為零。 |
|
boolean |
removeElement(Object obj)
從此向量中移除變數的第一個(索引最小的)比對項。 |
|
void |
removeElementAt(int index)
刪除指定索引處的元件。 |
|
protected void |
removeRange(int fromIndex,
int toIndex)
從此 List 中移除其索引位於 fromIndex(包括)與 toIndex(不包括)之間的所有元素。 |
|
boolean |
retainAll(Collection<?> c)
在此向量中僅保留包含在指定 Collection 中的元素。 |
|
E |
set(int index,
E element)
用指定的元素替換此向量中指定位置處的元素。 |
|
void |
setElementAt(E obj,
int index)
將此向量指定 index 處的元件設置為指定的物件。 |
|
void |
setSize(int newSize)
設置此向量的大小。 |
|
int |
size()
返回此向量中的元件數。 |
|
List<E> |
subList(int fromIndex,
int toIndex)
返回此 List 的部分視圖,元素範圍為從 fromIndex(包括)到 toIndex(不包括)。 |
|
Object[] |
toArray()
返回一個陣列,包含此向量中以恰當順序存放的所有元素。 |
|
|
toArray(T[] a)
返回一個陣列,包含此向量中以恰當順序存放的所有元素;返回陣列的運行時型別為指定陣列的型別。 |
|
String |
toString()
返回此向量的字元串表示形式,其中包含每個元素的 String 表示形式。 |
|
void |
trimToSize()
對此向量的容量進行微調,使其等於向量的當前大小。 |
從類別 java.util.AbstractList 繼承的方法 |
---|
iterator, listIterator, listIterator |
從類別 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
從介面 java.util.List 繼承的方法 |
---|
iterator, listIterator, listIterator |
欄位詳細資訊 |
---|
protected Object[] elementData
Vector 中的最後一個元素後的任何陣列元素都為 null。
protected int elementCount
Vector
物件中的有效元件數。從 elementData[0]
到 elementData[elementCount-1]
的元件均為實際項。
protected int capacityIncrement
建構子詳細資訊 |
---|
public Vector(int initialCapacity, int capacityIncrement)
initialCapacity
- 向量的初始容量capacityIncrement
- 當向量溢位時容量增加的量
IllegalArgumentException
- 如果指定的初始容量為負數public Vector(int initialCapacity)
initialCapacity
- 向量的初始容量
IllegalArgumentException
- 如果指定的初始容量為負數public Vector()
10
,其標準容量增量為零。
public Vector(Collection<? extends E> c)
c
- 其元素要放入此向量中的 collection
NullPointerException
- 如果指定的 collection 為 null方法詳細資訊 |
---|
public void copyInto(Object[] anArray)
k
處的項將複製到 anArray
的元件 k
中。
anArray
- 要將元件複製到其中的陣列
NullPointerException
- 如果給定的陣列為 null
IndexOutOfBoundsException
- 如果指定陣列不夠大,不能夠保存此向量中的所有元件
ArrayStoreException
- 如果此向量的元件不屬於可在指定陣列中存儲的運行時型別toArray(Object[])
public void trimToSize()
elementData
中)替換為一個較小的陣列,從而將容量更改為等於當前大小。應用程序可以使用此操作最小化向量的存儲。
public void ensureCapacity(int minCapacity)
如果此向量的當前容量小於 minCapacity
,則通過將其內部資料陣列(保存在欄位 elementData
中)替換為一個較大的陣列來增加其容量。新資料陣列的大小將為原來的大小加上 capacityIncrement
,除非 capacityIncrement
的值小於等於零,在後一種情況下,新的容量將為原來容量的兩倍,不過,如果此大小仍然小於 minCapacity
,則新容量將為 minCapacity
。
minCapacity
- 需要的最小容量public void setSize(int newSize)
null
項。如果新大小小於當前大小,則丟棄索引 newSize
處及其之後的所有項。
newSize
- 此向量的新大小
ArrayIndexOutOfBoundsException
- 如果新大小為負數public int capacity()
elementData
欄位中的內部資料陣列的長度)public int size()
Collection<E>
中的 size
List<E>
中的 size
AbstractCollection<E>
中的 size
public boolean isEmpty()
Collection<E>
中的 isEmpty
List<E>
中的 isEmpty
AbstractCollection<E>
中的 isEmpty
true
;否則返回 false
。public Enumeration<E> elements()
Enumeration
物件將產生此向量中的所有項。產生的第一項為索引 0
處的項,然後是索引 1
處的項,依此類別推。
Iterator
public boolean contains(Object o)
true
。更確切地講,當且僅當此向量至少包含一個滿足 (o==null ? e==null : o.equals(e)) 的元素 e
時,返回 true
。
Collection<E>
中的 contains
List<E>
中的 contains
AbstractCollection<E>
中的 contains
o
- 測試在此向量中是否存在的元素
true
public int indexOf(Object o)
i
;如果沒有這樣的索引,則返回 -1。
List<E>
中的 indexOf
AbstractList<E>
中的 indexOf
o
- 要搜尋的元素
public int indexOf(Object o, int index)
index
處正向搜尋,如果未找到該元素,則返回 -1。更確切地講,返回滿足 (i >= index && (o==null ? get(i)==null : o.equals(get(i)))) 的最低索引 i
;如果沒有這樣的索引,則返回 -1。
o
- 要搜尋的元素index
- 搜尋開始處的索引
index
位置或之後位置處第一次出現的指定元素的索引;如果未找到該元素,則返回 -1
。
IndexOutOfBoundsException
- 如果指定索引為負數Object.equals(Object)
public int lastIndexOf(Object o)
i
;如果沒有這樣的索引,則返回 -1。
List<E>
中的 lastIndexOf
AbstractList<E>
中的 lastIndexOf
o
- 要搜尋的元素
public int lastIndexOf(Object o, int index)
index
處逆向搜尋,如果未找到該元素,則返回 -1。更確切地講,返回滿足 (i <= index && (o==null ? get(i)==null : o.equals(get(i)))) 的最高索引 i
;如果沒有這樣的索引,則返回 -1。
o
- 要搜尋的元素index
- 逆向搜尋開始處的索引
index
位置處最後一次出現的指定元素的索引;如果未找到該元素,則返回 -1。
IndexOutOfBoundsException
- 如果指定索引大於等於此向量的當前大小public E elementAt(int index)
此方法的功能與 get(int)
方法的功能完全相同(後者是 List
介面的一部分)。
index
- 此向量的一個索引
ArrayIndexOutOfBoundsException
- 如果該索引超出範圍 (index < 0 || index >= size()
)public E firstElement()
0
) 處的項)。
NoSuchElementException
- 如果此向量沒有元件public E lastElement()
size() - 1
處的元件。
NoSuchElementException
- 如果此向量為空public void setElementAt(E obj, int index)
index
處的元件設置為指定的物件。丟棄該位置以前的元件。
索引必須為一個大於等於 0
且小於向量當前大小的值。
此方法的功能與 set(int, E)
方法的功能完全相同(後者是 List
介面的一部分)。注意,set
方法將反轉參數的順序,與陣列用法更為比對。另外還要注意,set
方法將返回以前存儲在指定位置的舊值。
obj
- 將用來設置元件的內容index
- 指定的索引
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size()
)public void removeElementAt(int index)
index
的元件都將下移,使其索引值變成比以前小 1 的值。此向量的大小將減 1
。
索引必須為一個大於等於 0
且小於向量當前大小的值。
此方法的功能與 remove(int)
方法的功能完全相同(後者是 List
介面的一部分)。注意,remove
方法將返回存儲在指定位置的舊值。
index
- 要移除物件的索引
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size()
)public void insertElementAt(E obj, int index)
index
處。此向量中的每個索引大於等於指定 index
的元件都將向上移位,使其索引值變成比以前大 1 的值。
索引必須為一個大於等於 0
且小於等於向量當前大小的值(如果索引等於向量的當前大小,則將新元素添加到向量)。
此方法的功能與 add(int, E)
方法的功能完全相同(後者是 List
介面的一部分)。注意,add
方法將反轉參數的順序,與陣列用法更為比對。
obj
- 要插入的元件index
- 新元件的插入位置
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size()
)public void addElement(E obj)
此方法的功能與 add(E)
方法的功能完全相同(後者是 List
介面的一部分)。
obj
- 要添加的元件public boolean removeElement(Object obj)
此方法的功能與 remove(Object)
方法的功能完全相同(後者是 List
介面的一部分)。
obj
- 要移除的元件
true
;否則返回 false
。public void removeAllElements()
public Object clone()
Vector
物件的原始內部資料陣列的參考。
Object
中的 clone
Cloneable
public Object[] toArray()
Collection<E>
中的 toArray
List<E>
中的 toArray
AbstractCollection<E>
中的 toArray
Arrays.asList(Object[])
public <T> T[] toArray(T[] a)
如果向量能夠適應指定的陣列,而且還有多餘空間(即陣列的元素比向量的元素多),則將緊跟向量末尾的陣列元素設置為 null。(僅 在調用者知道向量不包含任何 null 元素的情況下,這對確定向量的長度才有用)。
Collection<E>
中的 toArray
List<E>
中的 toArray
AbstractCollection<E>
中的 toArray
a
- 要在其中存儲向量元素的陣列(如果該陣列足夠大);否則,將為此分派一個具有相同運行時型別的新陣列。
ArrayStoreException
- 如果 a 的運行時型別不是此向量中每個元素的運行時型別的父級類別型
NullPointerException
- 如果給定的陣列為 nullpublic E get(int index)
List<E>
中的 get
AbstractList<E>
中的 get
index
- 要返回元素的索引
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size()
)public E set(int index, E element)
List<E>
中的 set
AbstractList<E>
中的 set
index
- 要替換元素的索引element
- 要存儲在指定位置的元素
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size()
)public boolean add(E e)
Collection<E>
中的 add
List<E>
中的 add
AbstractList<E>
中的 add
e
- 要添加到此向量的元素
true
(根據 Collection.add(E)
的規定)public boolean remove(Object o)
(o==null ? get(i)==null : o.equals(get(i)))
的元素(如果存在這樣的元素)。
Collection<E>
中的 remove
List<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 要從向量中移除的元素(如果存在)
public void add(int index, E element)
List<E>
中的 add
AbstractList<E>
中的 add
index
- 要在其位置插入指定元素的索引element
- 要插入的元素
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size()
)public E remove(int index)
List<E>
中的 remove
AbstractList<E>
中的 remove
index
- 要移除元素的索引
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index >= size()
)public void clear()
Collection<E>
中的 clear
List<E>
中的 clear
AbstractList<E>
中的 clear
public boolean containsAll(Collection<?> c)
Collection<E>
中的 containsAll
List<E>
中的 containsAll
AbstractCollection<E>
中的 containsAll
c
- 要在此向量中測試是否包含其元素的 collection
NullPointerException
- 如果指定 collection 為 nullAbstractCollection.contains(Object)
public boolean addAll(Collection<? extends E> c)
Collection<E>
中的 addAll
List<E>
中的 addAll
AbstractCollection<E>
中的 addAll
c
- 要插入到此向量的元素
true
NullPointerException
- 如果指定 collection 為 nullAbstractCollection.add(Object)
public boolean removeAll(Collection<?> c)
Collection<E>
中的 removeAll
List<E>
中的 removeAll
AbstractCollection<E>
中的 removeAll
c
- 要從向量中移除的元素的 collection
ClassCastException
- 如果此向量中的一個或多個元素的型別與指定 collection 不相容(可選)
NullPointerException
- 如果此向量包含一個或多個 null 元素並且指定 collection 不支持 null 元素(可選),或者指定 collection 為 nullAbstractCollection.remove(Object)
,
AbstractCollection.contains(Object)
public boolean retainAll(Collection<?> c)
Collection<E>
中的 retainAll
List<E>
中的 retainAll
AbstractCollection<E>
中的 retainAll
c
- 要在此向量中保留的元素的 collection(移除其他所有元素)
ClassCastException
- 如果此向量中的一個或多個元素的型別與指定 collection 不相容(可選)
NullPointerException
- 如果此向量包含一個或多個 null 元素並且指定 collection 不支持 null 元素(可選),或者指定 collection 為 nullAbstractCollection.remove(Object)
,
AbstractCollection.contains(Object)
public boolean addAll(int index, Collection<? extends E> c)
List<E>
中的 addAll
AbstractList<E>
中的 addAll
index
- 要插入指定 collection 的第一個元素的索引c
- 要插入到此向量的元素
true
ArrayIndexOutOfBoundsException
- 如果索引超出範圍 (index < 0 || index > size()
)
NullPointerException
- 如果指定的 collection 為 nullpublic boolean equals(Object o)
(e1==null ? e2==null :
e1.equals(e2))
,則兩個元素 e1
和 e2
相等)。換句話說,如果兩個 List 套件含相同順序的相同元素,則這兩個 List 就定義為相等。
Collection<E>
中的 equals
List<E>
中的 equals
AbstractList<E>
中的 equals
o
- 要與此向量進行相等性比較的物件
Object.hashCode()
,
Hashtable
public int hashCode()
Collection<E>
中的 hashCode
List<E>
中的 hashCode
AbstractList<E>
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
AbstractCollection<E>
中的 toString
public List<E> subList(int fromIndex, int toIndex)
此方法消除了顯式範圍操作的需要(此操作通常針對陣列存在)。通過操作 subList 視圖而非整個 List,期望 List 的任何操作可用作範圍操作。例如,下面的語句從 List 中移除了元素的範圍:
list.subList(from, to).clear();可以對 indexOf 和 lastIndexOf 建構類似的語句,而且 Collections 類別中的所有演算法都可以應用於 subList。
如果通過任何其他方式(而不是通過返回的列表)從結構上修改 內部 List(即此 List),則此方法返回的 List 的語義將變為不確定的(從結構上修改是指更改 List 的大小,或者以其他方式打亂 List,使正在進行的迭代產生錯誤的結果)。
List<E>
中的 subList
AbstractList<E>
中的 subList
fromIndex
- subList的低端點(包括)toIndex
- subList 的高端點(不包括)
IndexOutOfBoundsException
- 如果端點索引值超出範圍 (fromIndex < 0 || toIndex > size)
IllegalArgumentException
- 如果端點索引順序錯誤 (fromIndex > toIndex)
protected void removeRange(int fromIndex, int toIndex)
AbstractList<E>
中的 removeRange
fromIndex
- 要移除的第一個元素的索引toIndex
- 要移除的最後一個元素之後的索引
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。