|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
E
- 此 set 所維護元素的型別public interface Set<E>
一個不包含重複元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2)
的元素對 e1
和 e2
,並且最多包含一個 null 元素。正如其名稱所暗示的,此介面模仿了數學上的 set 抽象。
在所有建構子以及 add、equals 和 hashCode 方法的協定上,Set 介面還加入了其他規定,這些規定超出了從 Collection 介面所繼承的內容。出於方便考慮,它還包括了其他繼承方法的宣告(這些宣告的規範已經專門針對 Set 介面進行了修改,但是沒有包含任何其他的規定)。
對這些建構子的其他規定是(不要奇怪),所有建構子必須創建一個不包含重複元素的 set(正如上面所定義的)。
註:如果將可變物件用作 set 元素,那麼必須極其小心。如果物件是 set 中某個元素,以一種影響 equals 比較的方式改變物件的值,那麼 set 的行為就是不確定的。此項禁止的一個特殊情況是不允許某個 set 套件含其自身作為元素。
某些 set 實作對其所包含的元素有所限制。例如,某些實作禁止 null 元素,而某些則對其元素的型別所有限制。試圖添加不合格的元素會拋出未經檢查的異常,通常是 NullPointerException 或 ClassCastException。試圖查詢不合格的元素是否存在可能會拋出異常,也可能簡單地返回 false;某些實作會採用前一種行為,而某些則採用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在 set 中插入不合格的元素,則該操作可能拋出一個異常,也可能成功,這取決於實作的選擇。此介面的規範中將這樣的異常標記為「可選」。
此介面是 Java Collections Framework 的成員。
Collection
,
List
,
SortedSet
,
HashSet
,
TreeSet
,
AbstractSet
,
Collections.singleton(java.lang.Object)
,
Collections.EMPTY_SET
方法摘要 | ||
---|---|---|
boolean |
add(E e)
如果 set 中尚未存在指定的元素,則添加此元素(可選操作)。 |
|
boolean |
addAll(Collection<? extends E> c)
如果 set 中沒有指定 collection 中的所有元素,則將其添加到此 set 中(可選操作)。 |
|
void |
clear()
移除此 set 中的所有元素(可選操作)。 |
|
boolean |
contains(Object o)
如果 set 套件含指定的元素,則返回 true。 |
|
boolean |
containsAll(Collection<?> c)
如果此 set 套件含指定 collection 的所有元素,則返回 true。 |
|
boolean |
equals(Object o)
比較指定對象與此 set 的相等性。 |
|
int |
hashCode()
返回 set 的雜湊碼值。 |
|
boolean |
isEmpty()
如果 set 不包含元素,則返回 true。 |
|
Iterator<E> |
iterator()
返回在此 set 中的元素上進行迭代的迭代器。 |
|
boolean |
remove(Object o)
如果 set 中存在指定的元素,則將其移除(可選操作)。 |
|
boolean |
removeAll(Collection<?> c)
移除 set 中那些包含在指定 collection 中的元素(可選操作)。 |
|
boolean |
retainAll(Collection<?> c)
僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。 |
|
int |
size()
返回 set 中的元素數(其容量)。 |
|
Object[] |
toArray()
返回一個套件含 set 中所有元素的陣列。 |
|
|
toArray(T[] a)
返回一個套件含此 set 中所有元素的陣列;返回陣列的運行時型別是指定陣列的型別。 |
方法詳細資訊 |
---|
int size()
Collection<E>
中的 size
boolean isEmpty()
Collection<E>
中的 isEmpty
boolean contains(Object o)
true
。
Collection<E>
中的 contains
o
- 要測試此 set 中是否存在的元素
ClassCastException
- 如果指定元素的型別與此 set 不相容(可選)
NullPointerException
- 如果指定的元素為 null 並且此 set 不允許 null 元素(可選)Iterator<E> iterator()
Collection<E>
中的 iterator
Iterable<E>
中的 iterator
Object[] toArray()
由於此 set 不維護對返回陣列的任何參考,因而它是安全的。(換句話說,即使此 set 受到陣列的支持,此方法也必須分派一個新的陣列)。因此,調用者可以隨意修改返回的陣列。
此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。
Collection<E>
中的 toArray
<T> T[] toArray(T[] a)
如果指定的陣列能容納此 set,並有剩餘的空間(即該陣列的元素比此 set 多),那麼會將列表中緊接該 set 尾部的元素設置為 null。(只有在調用者知道此 set 不包含任何 null 元素時才能用此方法確定此 set 的長度)。
如果此 set 對其迭代器返回的元素的順序作出了某些保證,那麼此方法也必須按相同的順序返回這些元素。
像 toArray()
方法一樣,此方法充當基於陣列的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許對輸出陣列的運行時型別上進行精確控制,在某些情況下,可以用來節省分派開銷。
假定 x 是只包含字元串的一個已知 set。以下程式碼用來將該 set 轉儲到一個新分派的 String 陣列:
String[] y = x.toArray(new String[0]);注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。
Collection<E>
中的 toArray
a
- 存儲此 set 中元素的陣列(如果其足夠大);否則將為此分派一個具有相同運行時型別的新陣列。
ArrayStoreException
- 如果指定陣列的運行時型別不是此 set 中所有元素的運行時型別的父級類別型
NullPointerException
- 如果指定的陣列為 nullboolean add(E e)
上述規定並未暗示 set 必須接受所有元素;set 可以拒絕添加任意特定的元素,包括 null,並拋出異常,這與 Collection.add
規範中所描述的一樣。每個 set 實作應該明確地記錄對其可能包含元素的所有限制。
Collection<E>
中的 add
e
- 要添加到 set 中的元素
UnsupportedOperationException
- 如果此 set 不支持 add 操作
ClassCastException
- 如果指定元素的類別不允許它添加到此 set
NullPointerException
- 如果指定的元素為 null 並且此 set 不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許它添加到此 setboolean remove(Object o)
Collection<E>
中的 remove
o
- 從 set 中移除的物件(如果存在)
ClassCastException
- 如果指定元素的型別與此 set 不相容(可選)
NullPointerException
- 如果指定的元素為 null,並且此 set 不允許 null 元素(可選)
UnsupportedOperationException
- 如果此 set 不支持 remove 操作boolean containsAll(Collection<?> c)
Collection<E>
中的 containsAll
c
- 檢查是否包含在此 set 中的 collection
ClassCastException
- 如果指定 collection 中的一個或多個元素的型別與此 set 不相容(可選)
NullPointerException
- 如果指定的 collection 套件含一個或多個 null 元素並且此 set 不允許 null 元素(可選),或者指定的 collection 為 nullcontains(Object)
boolean addAll(Collection<? extends E> c)
Collection<E>
中的 addAll
c
- 套件含要添加到此 set 中的元素的 collection
UnsupportedOperationException
- 如果 set 不支持 addAll 操作
ClassCastException
- 如果某些指定 collection 元素的類別不允許它添加到此 set
NullPointerException
- 如果指定的 collection 套件含一個或多個 null 元素並且此 set 不允許 null 元素,或者指定的 collection 為 null
IllegalArgumentException
- 如果指定 collection 元素的某些屬性不允許它添加到此 setadd(Object)
boolean retainAll(Collection<?> c)
Collection<E>
中的 retainAll
c
- 套件含要保留到此 set 中的元素的 collection
UnsupportedOperationException
- 如果此 set 不支持 retainAll 操作
ClassCastException
- 如果此 set 元素的類別與指定的 collection 不相容(可選)
NullPointerException
- 如果此 set 套件含 null 元素並且指定的 collection 不支持 null 元素(可選),或者指定的 collection 為 nullremove(Object)
boolean removeAll(Collection<?> c)
Collection<E>
中的 removeAll
c
- 套件含要從此 set 中移除的元素的 collection
UnsupportedOperationException
- 如果此 set 不支持 removeAll 操作
ClassCastException
- 如果此 set 元素的類別與指定的 collection 不相容(可選)
NullPointerException
- 如果此 set 套件含 null 元素並且指定的 collection 不允許 null 元素(可選),或者指定的 collection 為 nullremove(Object)
,
contains(Object)
void clear()
Collection<E>
中的 clear
UnsupportedOperationException
- 如果此 set 不支持 clear 方法boolean equals(Object o)
Collection<E>
中的 equals
Object
中的 equals
o
- 要與此 set 進行相等性比較的物件
Object.hashCode()
,
Hashtable
int hashCode()
Object.hashCode()
的常規協定所要求的那樣。
Collection<E>
中的 hashCode
Object
中的 hashCode
Object.equals(Object)
,
equals(Object)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。