程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 淺談為之奮斗過的Set接口,淺談奮斗set接口

淺談為之奮斗過的Set接口,淺談奮斗set接口

編輯:JAVA綜合教程

淺談為之奮斗過的Set接口,淺談奮斗set接口


Set接口

Set接口存儲一組唯一,無序的對象

HashSet 是Set接口常用的實現類

HashSet允許集合元素值為null 操作數據的方法與List類似

Set接口不存在get()方法

set 是一個不包含重復元素的集合(collction)。Set接口中的函數都是從Collection繼承而來。

但限制了add 的使用,需要其不能添加重復元素。


public interface Set<E>extends Collection<E>

一個不包含重復元素的 collection。更確切地講,set 不包含滿足 e1.equals(e2) 的元素對 e1e2,並且最多包含一個 null 元素。正如其名稱所暗示的,此接口模仿了數學上的 set 抽象。

在所有構造方法以及 addequalshashCode 方法的協定上,Set 接口還加入了其他規定,這些規定超出了從 Collection 接口所繼承的內容。出於方便考慮,它還包括了其他繼承方法的聲明(這些聲明的規范已經專門針對 Set 接口進行了修改,但是沒有包含任何其他的規定)。

對這些構造方法的其他規定是(不要奇怪),所有構造方法必須創建一個不包含重復元素的 set(正如上面所定義的)。

注:如果將可變對象用作 set 元素,那麼必須極其小心。如果對象是 set 中某個元素,以一種影響 equals 比較的方式改變對象的值,那麼 set 的行為就是不確定的。此項禁止的一個特殊情況是不允許某個 set 包含其自身作為元素。

某些 set 實現對其所包含的元素有所限制。例如,某些實現禁止 null 元素,而某些則對其元素的類型所有限制。試圖添加不合格的元素會拋出未經檢查的異常,通常是 NullPointerExceptionClassCastException。試圖查詢不合格的元素是否存在可能會拋出異常,也可能簡單地返回 false;某些實現會采用前一種行為,而某些則采用後者。概括地說,試圖對不合格元素執行操作時,如果完成該操作後不會導致在 set 中插入不合格的元素,則該操作可能拋出一個異常,也可能成功,這取決於實現的選擇。此接口的規范中將這樣的異常標記為“可選”。

此接口是 Java Collections Framework 的成員。 

方法的詳細信息:

size
int size()返回 set 中的元素數(其容量)。如果 set 包含多個 Integer.MAX_VALUE 元素,則返回 Integer.MAX_VALUE。 

指定者:
接口 Collection<E> 中的 size
返回:
此 set 中的元素數(其容量)

--------------------------------------------------------------------------------

isEmpty
boolean isEmpty()如果 set 不包含元素,則返回 true。 

指定者:
接口 Collection<E> 中的 isEmpty
返回:
如果此 set 不包含元素,則返回 true

--------------------------------------------------------------------------------

contains
boolean contains(Object o)如果 set 包含指定的元素,則返回 true。更確切地講,當且僅當 set 包含滿足 (o==null ? e==null : o.equals(e)) 的元素 e 時返回 true。 

指定者:
接口 Collection<E> 中的 contains
參數:
o - 要測試此 set 中是否存在的元素 
返回:
如果此 set 包含指定的元素,則返回 true 
拋出: 
ClassCastException - 如果指定元素的類型與此 set 不兼容(可選) 
NullPointerException - 如果指定的元素為 null 並且此 set 不允許 null 元素(可選)

--------------------------------------------------------------------------------

iterator
Iterator<E> iterator()返回在此 set 中的元素上進行迭代的迭代器。返回的元素沒有特定的順序(除非此 set 是某個提供順序保證的類的實例)。 

指定者:
接口 Collection<E> 中的 iterator
指定者:
接口 Iterable<E> 中的 iterator
返回:
在此 set 中的元素上進行迭代的迭代器

--------------------------------------------------------------------------------

toArray
Object[] toArray()返回一個包含 set 中所有元素的數組。如果此 set 對其迭代器返回的元素的順序作出了某些保證,那麼此方法也必須按相同的順序返回這些元素。 
由於此 set 不維護對返回數組的任何引用,因而它是安全的。(換句話說,即使此 set 受到數組的支持,此方法也必須分配一個新的數組)。因此,調用者可以隨意修改返回的數組。 

此方法充當基於數組的 API 與基於 collection 的 API 之間的橋梁。 


指定者:
接口 Collection<E> 中的 toArray
返回:
包含此 set 中所有元素的數組

--------------------------------------------------------------------------------

toArray
<T> T[] toArray(T[] a)返回一個包含此 set 中所有元素的數組;返回數組的運行時類型是指定數組的類型。如果指定的數組能容納該 set,則它將在其中返回。否則,將分配一個具有指定數組的運行時類型和此 set 大小的新數組。 
如果指定的數組能容納此 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 中元素的數組(如果其足夠大);否則將為此分配一個具有相同運行時類型的新數組。 
返回:
包含此 set 中所有元素的數組 
拋出: 
ArrayStoreException - 如果指定數組的運行時類型不是此 set 中所有元素的運行時類型的超類型 
NullPointerException - 如果指定的數組為 null

--------------------------------------------------------------------------------

add
boolean add(E e)如果 set 中尚未存在指定的元素,則添加此元素(可選操作)。更確切地講,如果此 set 沒有包含滿足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,則向該 set 中添加指定的元素 e。
如果此 set 已經包含該元素,則該調用不改變此 set 並返回 false。結合構造方法上的限制,這就可以確保 set 永遠不包含重復的元素。 上述規定並未暗示 set 必須接受所有元素;set 可以拒絕添加任意特定的元素,包括 null,並拋出異常,這與 Collection.add 規范中所描述的一樣。每個 set 實現應該明確地記錄對其可能包含元素的所有限制。 指定者: 接口 Collection<E> 中的 add 參數: e - 要添加到 set 中的元素 返回: 如果 set 尚未包含指定的元素,則返回 true 拋出: UnsupportedOperationException - 如果此 set 不支持 add 操作 ClassCastException - 如果指定元素的類不允許它添加到此 set NullPointerException - 如果指定的元素為 null 並且此 set 不允許 null 元素 IllegalArgumentException - 如果指定元素的某些屬性不允許它添加到此 set -------------------------------------------------------------------------------- remove boolean remove(Object o)如果 set 中存在指定的元素,則將其移除(可選操作)。更確切地講,如果此 set 中包含滿足 (o==null ? e==null : o.equals(e)) 的元素 e,則移除它。
如果此 set 包含指定的元素(或者此 set 由於調用而發生更改),則返回 true(一旦調用返回,則此 set 不再包含指定的元素)。 指定者: 接口 Collection<E> 中的 remove 參數: o - 從 set 中移除的對象(如果存在) 返回: 如果此 set 包含指定的對象,則返回 true 拋出: ClassCastException - 如果指定元素的類型與此 set 不兼容(可選) NullPointerException - 如果指定的元素為 null,並且此 set 不允許 null 元素(可選) UnsupportedOperationException - 如果此 set 不支持 remove 操作 -------------------------------------------------------------------------------- containsAll boolean containsAll(Collection<?> c)如果此 set 包含指定 collection 的所有元素,則返回 true。如果指定的 collection 也是一個 set,那麼當該 collection 是此 set 的子集 時返回 true。 指定者: 接口 Collection<E> 中的 containsAll 參數: c - 檢查是否包含在此 set 中的 collection 返回: 如果此 set 包含指定 collection 中的所有元素,則返回 true 拋出: ClassCastException - 如果指定 collection 中的一個或多個元素的類型與此 set 不兼容(可選) NullPointerException - 如果指定的 collection 包含一個或多個 null 元素並且此 set 不允許 null 元素(可選),或者指定的 collection 為 null 另請參見: contains(Object) -------------------------------------------------------------------------------- addAll boolean addAll(Collection<? extends E> c)如果 set 中沒有指定 collection 中的所有元素,則將其添加到此 set 中(可選操作)。如果指定的 collection 也是一個 set,則 addAll 操作會實際修改此 set,這樣其值是兩個 set 的一個並集。
如果操作正在進行的同時修改了指定的 collection,則此操作的行為是不確定的。 指定者: 接口 Collection<E> 中的 addAll 參數: c - 包含要添加到此 set 中的元素的 collection 返回: 如果此 set 由於調用而發生更改,則返回 true 拋出: UnsupportedOperationException - 如果 set 不支持 addAll 操作 ClassCastException - 如果某些指定 collection 元素的類不允許它添加到此 set NullPointerException - 如果指定的 collection 包含一個或多個 null 元素並且此 set 不允許 null 元素,或者指定的 collection 為 null IllegalArgumentException - 如果指定 collection 元素的某些屬性不允許它添加到此 set 另請參見: add(Object) -------------------------------------------------------------------------------- retainAll boolean retainAll(Collection<?> c)僅保留 set 中那些包含在指定 collection 中的元素(可選操作)。
換句話說,移除此 set 中所有未包含在指定 collection 中的元素。如果指定的 collection 也是一個 set,則此操作會實際修改此 set,這樣其值是兩個 set 的一個交集。 指定者: 接口 Collection<E> 中的 retainAll 參數: c - 包含要保留到此 set 中的元素的 collection 返回: 如果此 set 由於調用而發生更改,則返回 true 拋出: UnsupportedOperationException - 如果此 set 不支持 retainAll 操作 ClassCastException - 如果此 set 元素的類與指定的 collection 不兼容(可選) NullPointerException - 如果此 set 包含 null 元素並且指定的 collection 不支持 null 元素(可選),或者指定的 collection 為 null 另請參見: remove(Object) -------------------------------------------------------------------------------- removeAll boolean removeAll(Collection<?> c)移除 set 中那些包含在指定 collection 中的元素(可選操作)。如果指定的 collection 也是一個 set,則此操作會實際修改此 set,這樣其值是兩個 set 的一個不對稱差集。 指定者: 接口 Collection<E> 中的 removeAll 參數: c - 包含要從此 set 中移除的元素的 collection 返回: 如果此 set 由於調用而發生更改,則返回 true 拋出: UnsupportedOperationException - 如果此 set 不支持 removeAll 操作 ClassCastException - 如果此 set 元素的類與指定的 collection 不兼容(可選) NullPointerException - 如果此 set 包含 null 元素並且指定的 collection 不允許 null 元素(可選),或者指定的 collection 為 null 另請參見: remove(Object), contains(Object) -------------------------------------------------------------------------------- clear void clear()移除此 set 中的所有元素(可選操作)。此調用返回後該 set 將是空的。 指定者: 接口 Collection<E> 中的 clear 拋出: UnsupportedOperationException - 如果此 set 不支持 clear 方法 -------------------------------------------------------------------------------- equals boolean equals(Object o)比較指定對象與此 set 的相等性。如果指定的對象也是一個 set,兩個 set 的大小相同,並且指定 set 的所有成員都包含在此 set 中(或者,此 set 的所有成員都包含在指定的 set 中也一樣),則返回 true。
此定義確保了 equals 方法可在不同的 set 接口實現間正常工作。 指定者: 接口 Collection<E> 中的 equals 覆蓋: 類 Object 中的 equals 參數: o - 要與此 set 進行相等性比較的對象 返回: 如果指定的對象等於此 set,則返回 true

----------------------------------------------------------------

hashCode

int hashCode()

返回 set 的哈希碼值。一個 set 的哈希碼定義為此 set 中所有元素的哈希碼和,其中 null 元素的哈希碼定義為零。這就確保對於任意兩個 set s1s2 而言,s1.equals(s2) 就意味著 s1.hashCode()==s2.hashCode(),正如 Object.hashCode() 的常規協定所要求的那樣。
指定者:
接口 Collection<E> 中的 hashCode
覆蓋:
Object 中的 hashCode
返回:
此 set 的哈希碼值

Set接口的實現類

HashSet類

public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, Serializable

此類實現 Set 接口,由哈希表(實際上是一個 HashMap 實例)支持。它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。此類允許使用 null 元素。

此類為基本操作提供了穩定性能,這些基本操作包括 addremovecontainssize,假定哈希函數將這些元素正確地分布在桶中。

對此 set 進行迭代所需的時間與 HashSet 實例的大小(元素的數量)和底層 HashMap 實例(桶的數量)的“容量”的和成比例。因此,如果迭代性能很重要,則不要將初始容量設置得太高(或將加載因子設置得太低)。

注意,此實現不是同步的。如果多個線程同時訪問一個哈希 set,而其中至少一個線程修改了該 set,那麼它必須 保持外部同步。

這通常是通過對自然封裝該 set 的對象執行同步操作來完成的。如果不存在這樣的對象,則應該使用 Collections.synchronizedSet 方法來“包裝” set。最好在創建時完成這一操作,以防止對該 set 進行意外的不同步訪問:

   Set s = Collections.synchronizedSet(new HashSet(...));

此類的 iterator 方法返回的迭代器是快速失敗 的:在創建迭代器之後,如果對 set 進行修改,除非通過迭代器自身的 remove 方法,否則在任何時間以任何方式對其進行修改,Iterator 都將拋出 ConcurrentModificationException

因此,面對並發的修改,迭代器很快就會完全失敗,而不冒將來在某個不確定時間發生任意不確定行為的風險。

注意,迭代器的快速失敗行為無法得到保證,因為一般來說,不可能對是否出現不同步並發修改做出任何硬性保證。快速失敗迭代器在盡最大努力拋出 ConcurrentModificationException

因此,為提高這類迭代器的正確性而編寫一個依賴於此異常的程序是錯誤做法:迭代器的快速失敗行為應該僅用於檢測 bug。

此類是 Java Collections Framework 的成員。 

構造方法:

HashSet
public HashSet()構造一個新的空 set,其底層 HashMap 實例的默認初始容量是 16,加載因子是 0.75。 


--------------------------------------------------------------------------------

HashSet
public HashSet(Collection<? extends E> c)構造一個包含指定 collection 中的元素的新 set。使用默認的加載因子 0.75 和足以包含指定 collection 中所有元素的初始容量來創建 HashMap。 

參數:
c - 其中的元素將存放在此 set 中的 collection 
拋出: 
NullPointerException - 如果指定的 collection 為 null

--------------------------------------------------------------------------------

HashSet
public HashSet(int initialCapacity,
               float loadFactor)構造一個新的空 set,其底層 HashMap 實例具有指定的初始容量和指定的加載因子。 

參數:
initialCapacity - 哈希映射的初始容量
loadFactor - 哈希映射的加載因子 
拋出: 
IllegalArgumentException - 如果初始容量小於零,或者加載因子為非正數

--------------------------------------------------------------------------------

HashSet
public HashSet(int initialCapacity)構造一個新的空 set,其底層 HashMap 實例具有指定的初始容量和默認的加載因子(0.75)。 

參數:
initialCapacity - 哈希表的初始容量 
拋出: 
IllegalArgumentException - 如果初始容量小於零

方法詳細:

iterator
public Iterator<E> iterator()返回對此 set 中元素進行迭代的迭代器。返回元素的順序並不是特定的。 

指定者:
接口 Iterable<E> 中的 iterator
指定者:
接口 Collection<E> 中的 iterator
指定者:
接口 Set<E> 中的 iterator
指定者:
類 AbstractCollection<E> 中的 iterator
返回:
對此 set 中元素進行迭代的 Iterator
另請參見:
ConcurrentModificationException

--------------------------------------------------------------------------------

size
public int size()返回此 set 中的元素的數量(set 的容量)。 

指定者:
接口 Collection<E> 中的 size
指定者:
接口 Set<E> 中的 size
指定者:
類 AbstractCollection<E> 中的 size
返回:
此 set 中的元素的數量(set 的容量)

--------------------------------------------------------------------------------

isEmpty
public boolean isEmpty()如果此 set 不包含任何元素,則返回 true。 

指定者:
接口 Collection<E> 中的 isEmpty
指定者:
接口 Set<E> 中的 isEmpty
覆蓋:
類 AbstractCollection<E> 中的 isEmpty
返回:
如果此 set 不包含任何元素,則返回 true

--------------------------------------------------------------------------------

contains
public boolean contains(Object o)如果此 set 包含指定元素,則返回 true。 更確切地講,當且僅當此 set 包含一個滿足 (o==null ? e==null : o.equals(e)) 的 e 元素時,返回 true。 

指定者:
接口 Collection<E> 中的 contains
指定者:
接口 Set<E> 中的 contains
覆蓋:
類 AbstractCollection<E> 中的 contains
參數:
o - 其在此 set 中的存在已得到測試的元素 
返回:
如果此 set 包含指定元素,則返回 true

--------------------------------------------------------------------------------

add
public boolean add(E e)如果此 set 中尚未包含指定元素,則添加指定元素。更確切地講,如果此 set 沒有包含滿足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,則向此 set 添加指定的元素 e。
如果此 set 已包含該元素,則該調用不更改 set 並返回 false。 指定者: 接口 Collection<E> 中的 add 指定者: 接口 Set<E> 中的 add 覆蓋: 類 AbstractCollection<E> 中的 add 參數: e - 將添加到此 set 中的元素 返回: 如果此 set 尚未包含指定元素,則返回 true -------------------------------------------------------------------------------- remove public boolean remove(Object o)如果指定元素存在於此 set 中,則將其移除。更確切地講,如果此 set 包含一個滿足 (o==null ? e==null : o.equals(e)) 的元素 e,則將其移除。
如果此 set 已包含該元素,則返回 true(或者:如果此 set 因調用而發生更改,則返回 true)。(一旦調用返回,則此 set 不再包含該元素)。 指定者: 接口 Collection<E> 中的 remove 指定者: 接口 Set<E> 中的 remove 覆蓋: 類 AbstractCollection<E> 中的 remove 參數: o - 如果存在於此 set 中則需要將其移除的對象 返回: 如果 set 包含指定元素,則返回 true -------------------------------------------------------------------------------- clear public void clear()從此 set 中移除所有元素。此調用返回後,該 set 將為空。 指定者: 接口 Collection<E> 中的 clear 指定者: 接口 Set<E> 中的 clear 覆蓋: 類 AbstractCollection<E> 中的 clear -------------------------------------------------------------------------------- clone public Object clone()返回此 HashSet 實例的淺表副本:並沒有復制這些元素本身。 覆蓋: 類 Object 中的 clone 返回: 此 set 的淺表副本 另請參見: Cloneable
HashSet  newsTitleSet = new HashSet();
NewTitle car = new NewTitle(1, "飛機", "管理員");
//增加元素
newsTitleSet.add(car);

//遍歷集合
for(Object obj :newsTitleList){
    NewTitle title=(NewTitle)obj;
    System.out.println(title.getTitleName());
}

Treeset類

public class TreeSet<E>extends AbstractSet<E>implements NavigableSet<E>, Cloneable, Serializable基於 TreeMap 的 NavigableSet 實現。
使用元素的自然順序對元素進行排序,或者根據創建 set 時提供的 Comparator 進行排序,具體取決於使用的構造方法。 此實現為基本操作(add、remove 和 contains)提供受保證的 log(n) 時間開銷。 注意,如果要正確實現 Set 接口,則 set 維護的順序(無論是否提供了顯式比較器)必須與 equals 一致。(關於與 equals 一致 的精確定義,請參閱 Comparable 或 Comparator。)這是因為 Set 接口是按照 equals 操作定義的,
但 TreeSet 實例使用它的 compareTo(或 compare)方法對所有元素進行比較,因此從 set 的觀點來看,此方法認為相等的兩個元素就是相等的。即使 set 的順序與 equals 不一致,其行為也是 定義良好的;它只是違背了 Set 接口的常規協定。 注意,此實現不是同步的。如果多個線程同時訪問一個 TreeSet,而其中至少一個線程修改了該 set,那麼它必須 外部同步。這一般是通過對自然封裝該 set 的對象執行同步操作來完成的。
如果不存在這樣的對象,則應該使用 Collections.synchronizedSortedSet 方法來“包裝”該 set。此操作最好在創建時進行,以防止對 set 的意外非同步訪問: SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));此類的 iterator 方法返回的迭代器是快速失敗 的:在創建迭代器之後,如果從結構上對 set 進行修改,除非通過迭代器自身的 remove 方法,
否則在其他任何時間以任何方式進行修改都將導致迭代器拋出 ConcurrentModificationException。因此,對於並發的修改,迭代器很快就完全失敗,而不會冒著在將來不確定的時間發生不確定行為的風險。 注意,迭代器的快速失敗行為無法得到保證,一般來說,存在不同步的並發修改時,不可能作出任何肯定的保證。快速失敗迭代器盡最大努力拋出 ConcurrentModificationException。因此,編寫依賴於此異常的程序的做法是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用於檢測 bug。 此類是 Java Collections Framework 的成員。

構造方法

TreeSet
public TreeSet()構造一個新的空 set,該 set 根據其元素的自然順序進行排序。插入該 set 的所有元素都必須實現 Comparable 接口。
另外,所有這些元素都必須是可互相比較的:對於 set 中的任意兩個元素 e1 和 e2,執行 e1.compareTo(e2) 都不得拋出 ClassCastException。如果用戶試圖將違反此約束的元素添加到 set(例如,用戶試圖將字符串元素添加到其元素為整數的 set 中),
則 add 調用將拋出 ClassCastException。 -------------------------------------------------------------------------------- TreeSet public TreeSet(Comparator<? super E> comparator)構造一個新的空 TreeSet,它根據指定比較器進行排序。插入到該 set 的所有元素都必須能夠由指定比較器進行相互比較:
對於 set 中的任意兩個元素 e1 和 e2,執行 comparator.compare(e1, e2) 都不得拋出 ClassCastException。如果用戶試圖將違反此約束的元素添加到 set 中,則 add 調用將拋出 ClassCastException。 參數: comparator - 將用來對此 set 進行排序的比較器。如果該參數為 null,則使用元素的自然順序。 -------------------------------------------------------------------------------- TreeSet public TreeSet(Collection<? extends E> c)構造一個包含指定 collection 元素的新 TreeSet,它按照其元素的自然順序進行排序。插入該 set 的所有元素都必須實現 Comparable 接口。另外,所有這些元素都必須是可互相比較的:
對於 set 中的任意兩個元素 e1 和 e2,執行 e1.compareTo(e2) 都不得拋出 ClassCastException。 參數: c - 一個 collection,其元素將組成新的 set 拋出: ClassCastException - 如果 c 中的元素不是 Comparable,或者是不可相互比較的 NullPointerException - 如果指定 collection 為 null -------------------------------------------------------------------------------- TreeSet public TreeSet(SortedSet<E> s)構造一個與指定有序 set 具有相同映射關系和相同排序的新 TreeSet。 參數: s - 一個有序 set,其元素將組成新 set 拋出: NullPointerException - 如果指定有序 set 為 null

方法詳細信

 

iterator
public Iterator<E> iterator()返回在此 set 中的元素上按升序進行迭代的迭代器。 指定者: 接口 Iterable<E> 中的 iterator 指定者: 接口 Collection<E> 中的 iterator 指定者: 接口 NavigableSet<E> 中的 iterator 指定者: 接口 Set<E> 中的 iterator 指定者: 類 AbstractCollection<E> 中的 iterator 返回: 在此 set 中的元素上按升序進行迭代的迭代器 -------------------------------------------------------------------------------- descendingIterator public Iterator<E> descendingIterator()返回在此 set 元素上按降序進行迭代的迭代器。 指定者: 接口 NavigableSet<E> 中的 descendingIterator 返回: 在此 set 元素上按降序進行迭代的迭代器 -------------------------------------------------------------------------------- descendingSet public NavigableSet<E> descendingSet()從接口 NavigableSet 復制的描述 返回此 set 中所包含元素的逆序視圖。降序 set 受此 set 的支持,因此對此 set 的更改將反映在降序 set 中,反之亦然。如果在對任一 set 進行迭代的同時修改了任一 set(通過迭代器自己的 remove 操作除外),則迭代結果是不確定的。 返回 set 的順序等於 Collections.reverseOrder(comparator())。表達式 s.descendingSet().descendingSet() 返回的 s 視圖基本等於 s。 指定者: 接口 NavigableSet<E> 中的 descendingSet 返回: 此 set 的逆序視圖 -------------------------------------------------------------------------------- size public int size()返回 set 中的元素數(set 的容量)。 指定者: 接口 Collection<E> 中的 size 指定者: 接口 Set<E> 中的 size 指定者: 類 AbstractCollection<E> 中的 size 返回: 此 set 中的元素數(set 的容量) -------------------------------------------------------------------------------- isEmpty public boolean isEmpty()如果此 set 不包含任何元素,則返回 true。 指定者: 接口 Collection<E> 中的 isEmpty 指定者: 接口 Set<E> 中的 isEmpty 覆蓋: 類 AbstractCollection<E> 中的 isEmpty 返回: 如果此 set 不包含任何元素,則返回 true -------------------------------------------------------------------------------- contains public boolean contains(Object o)如果此 set 包含指定的元素,則返回 true。更確切地講,當且僅當此 set 包含滿足 (o==null ? e==null : o.equals(e)) 的元素 e 時,返回 true。 指定者: 接口 Collection<E> 中的 contains 指定者: 接口 Set<E> 中的 contains 覆蓋: 類 AbstractCollection<E> 中的 contains 參數: o - 將檢查是否包含在此 set 中的對象 返回: 如果此 set 包含指定元素,則返回 true 拋出: ClassCastException - 如果指定對象無法與該 set 中的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 -------------------------------------------------------------------------------- add public boolean add(E e)將指定的元素添加到此 set(如果該元素尚未存在於 set 中)。更確切地講,如果該 set 不包含滿足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,則將指定元素 e 添加到此 set 中。如果此 set 已經包含這樣的元素,則該調用不改變此 set 並返回 false。 指定者: 接口 Collection<E> 中的 add 指定者: 接口 Set<E> 中的 add 覆蓋: 類 AbstractCollection<E> 中的 add 參數: e - 要添加到此 set 的對象 返回: 如果此 set 尚未包含指定元素,則返回 true 拋出: ClassCastException - 如果指定對象無法與此 set 的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 -------------------------------------------------------------------------------- remove public boolean remove(Object o)將指定的元素從 set 中移除(如果該元素存在於此 set 中)。更確切地講,如果 set 中包含滿足 (o==null ? e==null : o.equals(e)) 的元素 e,則移除一個這樣的元素。如果此 set 包含這樣的元素(或者此 set 由於調用而發生更改),則返回 true。
(一旦調用返回,則此 set 不再包含這樣的元素。) 指定者: 接口 Collection<E> 中的 remove 指定者: 接口 Set<E> 中的 remove 覆蓋: 類 AbstractCollection<E> 中的 remove 參數: o - 將從此 set 中移除的對象(如果存在) 返回: 如果此 set 包含指定元素,則返回 true 拋出: ClassCastException - 如果指定對象無法與該 set 中的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 -------------------------------------------------------------------------------- clear public void clear()移除此 set 中的所有元素。在此調用返回之後,set 將為空。 指定者: 接口 Collection<E> 中的 clear 指定者: 接口 Set<E> 中的 clear 覆蓋: 類 AbstractCollection<E> 中的 clear -------------------------------------------------------------------------------- addAll public boolean addAll(Collection<? extends E> c)將指定 collection 中的所有元素添加到此 set 中。 指定者: 接口 Collection<E> 中的 addAll 指定者: 接口 Set<E> 中的 addAll 覆蓋: 類 AbstractCollection<E> 中的 addAll 參數: c - 包含要添加到此 set 的元素的 collection 返回: 如果此 set 由於調用而發生更改,則返回 true 拋出: ClassCastException - 如果提供的元素無法與 set 中的當前元素進行比較 NullPointerException - 如果指定 collection 為 null,或者任何元素為 null 並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 另請參見: AbstractCollection.add(Object) -------------------------------------------------------------------------------- subSet public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)從接口 NavigableSet 復制的描述 返回此 set 的部分視圖,其元素范圍從 fromElement 到 toElement。如果 fromElement 和 toElement 相等,則返回的 set 為空,除非 fromExclusive 和 toExclusive 都為 true。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可選 set 操作。 如果試圖在返回 set 的范圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。 指定者: 接口 NavigableSet<E> 中的 subSet 參數: fromElement - 返回 set 的低端點 fromInclusive - 如果低端點要包含在返回的視圖中,則為 true toElement - 返回 set 的高端點 toInclusive - 如果高端點要包含在返回的視圖中,則為 true 返回: 此 set 的部分視圖,其元素范圍從 fromElement(包括)到 toElement(不包括) 拋出: ClassCastException - 如果不能使用此 set 的比較器或者使用自然順序(如果 set 沒有比較器)比較 fromElement 和 toElement。如果 fromElement 或 toElement 不能與 set 中的當前元素進行比較,則實現可以(但不是必須)拋出此異常。 NullPointerException - 如果 fromElement 或 toElement 為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 IllegalArgumentException - 如果 fromElement 大於 toElement;如果此 set 本身有范圍限制,並且 fromElement 或 toElement 位於范圍的邊界之外。 從以下版本開始: 1.6 -------------------------------------------------------------------------------- headSet public NavigableSet<E> headSet(E toElement, boolean inclusive)從接口 NavigableSet 復制的描述 返回此 set 的部分視圖,其元素小於(或等於,如果 inclusive 為 true)toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可選 set 操作。 如果試圖在返回 set 的范圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。 指定者: 接口 NavigableSet<E> 中的 headSet 參數: toElement - 返回 set 的高端點 inclusive - 如果高端點要包含在返回的視圖中,則為 true 返回: 此 set 的部分視圖,其元素小於(或等於,如果 inclusive 為 true)toElement 拋出: ClassCastException - 如果 toElement 與此 set 的比較器不兼容(如果 set 沒有比較器;如果 toElement 沒有實現 Comparable)。如果 toElement 不能與 set 中的當前元素進行比較,則實現可以(但不是必須)拋出此異常。 NullPointerException - 如果 toElement 為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 IllegalArgumentException - 如果此 set 本身有范圍限制,並且 toElement 位於范圍的邊界之外 -------------------------------------------------------------------------------- tailSet public NavigableSet<E> tailSet(E fromElement, boolean inclusive)從接口 NavigableSet 復制的描述 返回此 set 的部分視圖,其元素大於(或等於,如果 inclusive 為 true)fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回 set 支持此 set 支持的所有可選 set 操作。 如果試圖在返回 set 的范圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。 指定者: 接口 NavigableSet<E> 中的 tailSet 參數: fromElement - 返回 set 的低端點 inclusive - 如果低端點要包含在返回的視圖中,則為 true 返回: 此 set 的部分視圖,其元素大於等於 fromElement 拋出: ClassCastException - 如果 fromElement 與此 set 的比較器不兼容(如果 set 沒有任何比較器;如果 fromElement 沒有實現 Comparable)。如果 fromElement 不能與 set 中的當前元素進行比較,則實現可以(但不是必須)拋出此異常。 NullPointerException - 如果 fromElement 為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 IllegalArgumentException - 如果此 set 本身有范圍限制,並且 fromElement 位於范圍的邊界之外 -------------------------------------------------------------------------------- subSet public SortedSet<E> subSet(E fromElement, E toElement)從接口 NavigableSet 復制的描述 返回此 set 的部分視圖,其元素從 fromElement(包括)到 toElement(不包括)。(如果 fromElement 和 toElement 相等,則返回空的 set)。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可選 set 操作。 如果試圖在返回 set 的范圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。 等效於 subSet(fromElement, true, toElement, false)。 指定者: 接口 NavigableSet<E> 中的 subSet 指定者: 接口 SortedSet<E> 中的 subSet 參數: fromElement - 返回 set 的低端點(包括) toElement - 返回 set 的高端點(不包括) 返回: 此 set 的部分視圖,其元素的范圍從 fromElement(包括)到 toElement(不包括) 拋出: ClassCastException - 如果無法使用此 set 的比較器(如果 set 沒有比較器,則使用自然順序)比較 fromElement 和 toElement。如果 fromElement 或 toElement 不能與 set 中的當前元素進行比較,則實現可以(但不是必須)拋出此異常。 NullPointerException - 如果 fromElement 或 toElement 為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 IllegalArgumentException - 如果 fromElement 大於 toElement;如果此 set 本身有范圍限制,並且 fromElement 或 toElement 位於范圍的邊界之外 -------------------------------------------------------------------------------- headSet public SortedSet<E> headSet(E toElement)從接口 NavigableSet 復制的描述 返回此 set 的部分視圖,其元素嚴格小於 toElement。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可選 set 操作。 如果試圖在返回 set 的范圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。 等效於 headSet(toElement, false)。 指定者: 接口 NavigableSet<E> 中的 headSet 指定者: 接口 SortedSet<E> 中的 headSet 參數: toElement - 返回 set 的高端點(不包括) 返回: 此 set 的部分視圖,其元素嚴格小於 toElement 拋出: ClassCastException - 如果 toElement 與此 set 的比較器不兼容(如果 set 沒有比較器;如果 toElement 沒有實現 Comparable)。如果 toElement 不能與 set 中的當前元素進行比較,則實現可以(但不是必須)拋出此異常。 NullPointerException - 如果 toElement 為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 IllegalArgumentException - 如果此 set 本身有范圍限制,並且 toElement 位於范圍的邊界之外 -------------------------------------------------------------------------------- tailSet public SortedSet<E> tailSet(E fromElement)從接口 NavigableSet 復制的描述 返回此 set 的部分視圖,其元素大於等於 fromElement。返回的 set 受此 set 支持,所以在返回 set 中的更改將反映在此 set 中,反之亦然。返回的 set 支持此 set 支持的所有可選 set 操作。 如果試圖在返回 set 的范圍之外插入元素,則返回的 set 將拋出 IllegalArgumentException。 等效於 tailSet(fromElement, true)。 指定者: 接口 NavigableSet<E> 中的 tailSet 指定者: 接口 SortedSet<E> 中的 tailSet 參數: fromElement - 返回 set 的低端點(包括) 返回: 此 set 的部分視圖,其元素大於等於 fromElement 拋出: ClassCastException - 如果 fromElement 與此 set 的比較器不兼容(如果 set 沒有比較器;如果 fromElement 沒有實現 Comparable)。如果 fromElement 不能與 set 中的當前元素進行比較,則實現可以(但不是必須)拋出此異常。 NullPointerException - 如果 fromElement 為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 IllegalArgumentException - 如果此 set 本身有范圍限制,並且 fromElement 位於范圍的邊界之外 -------------------------------------------------------------------------------- comparator public Comparator<? super E> comparator()從接口 SortedSet 復制的描述 返回對此 set 中的元素進行排序的比較器;如果此 set 使用其元素的自然順序,則返回 null。 指定者: 接口 SortedSet<E> 中的 comparator 返回: 用來對此 set 中的元素進行排序的比較器;如果此 set 使用其元素的自然順序,則返回 null -------------------------------------------------------------------------------- first public E first()從接口 SortedSet 復制的描述 返回此 set 中當前第一個(最低)元素。 指定者: 接口 SortedSet<E> 中的 first 返回: 此 set 中當前第一個(最低)元素 拋出: NoSuchElementException - 如果此 set 為空 -------------------------------------------------------------------------------- last public E last()從接口 SortedSet 復制的描述 返回此 set 中當前最後一個(最高)元素。 指定者: 接口 SortedSet<E> 中的 last 返回: 此 set 中當前最後一個(最高)元素 拋出: NoSuchElementException - 如果此 set 為空 -------------------------------------------------------------------------------- lower public E lower(E e)從接口 NavigableSet 復制的描述 返回此 set 中嚴格小於給定元素的最大元素;如果不存在這樣的元素,則返回 null。 指定者: 接口 NavigableSet<E> 中的 lower 參數: e - 要匹配的值 返回: 小於 e 的最大元素;如果不存在這樣的元素,則返回 null 拋出: ClassCastException - 如果指定元素不能與 set 中的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 -------------------------------------------------------------------------------- floor public E floor(E e)從接口 NavigableSet 復制的描述 返回此 set 中小於等於給定元素的最大元素;如果不存在這樣的元素,則返回 null。 指定者: 接口 NavigableSet<E> 中的 floor 參數: e - 要匹配的值 返回: 小於等於 e 的最大元素;如果不存在這樣的元素,則返回 null 拋出: ClassCastException - 如果指定元素不能與 set 中的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 -------------------------------------------------------------------------------- ceiling public E ceiling(E e)從接口 NavigableSet 復制的描述 返回此 set 中大於等於給定元素的最小元素;如果不存在這樣的元素,則返回 null。 指定者: 接口 NavigableSet<E> 中的 ceiling 參數: e - 要匹配的值 返回: 大於等於 e 的最小元素;如果不存在這樣的元素,則返回 null 拋出: ClassCastException - 如果指定元素不能與 set 中的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 -------------------------------------------------------------------------------- higher public E higher(E e)從接口 NavigableSet 復制的描述 返回此 set 中嚴格大於給定元素的最小元素;如果不存在這樣的元素,則返回 null。 指定者: 接口 NavigableSet<E> 中的 higher 參數: e - 要匹配的值 返回: 大於 e 的最小元素;如果不存在這樣的元素,則返回 null 拋出: ClassCastException - 如果指定元素不能與 set 中的當前元素進行比較 NullPointerException - 如果指定元素為 null,並且此 set 使用自然順序,或者其比較器不允許使用 null 元素 ------------------------------------------------------------------------------- pollFirst public E pollFirst()從接口 NavigableSet 復制的描述 獲取並移除第一個(最低)元素;如果此 set 為空,則返回 null。 指定者: 接口 NavigableSet<E> 中的 pollFirst 返回: 第一個元素;如果此 set 為空,則返回 null -------------------------------------------------------------------------------- pollLast public E pollLast()從接口 NavigableSet 復制的描述 獲取並移除最後一個(最高)元素;如果此 set 為空,則返回 null。 指定者: 接口 NavigableSet<E> 中的 pollLast 返回: 最後一個元素;如果此 set 為空,則返回 null -------------------------------------------------------------------------------- clone public Object clone()返回 TreeSet 實例的淺表副本。(這些元素本身不被復制。) 覆蓋: 類 Object 中的 clone 返回: 此 set 的淺表副本

代碼案例

public class TestSet {  
    public static void main(String [] args)  
    {  
        Set<Integer> hashSet = new HashSet<Integer>();  
        Set<Integer> treeSet = new TreeSet<Integer>();  
        hashSet = fillSet(hashSet);  
        System.out.println(hashSet);  
        treeSet = fillSet(treeSet);  
        System.out.println(treeSet);  
    }  
    public static Set<Integer> fillSet(Set<Integer> set)  
    {  
        while(set.size() < 7)  
        {  
            set.add((int)(Math.random()*35+1));  
        }  
        return set;  
    }  
}  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved