JavaTM 2 Platform
Standard Ed. 6

java.util
類別 AbstractSet<E>

java.lang.Object
  繼承者 java.util.AbstractCollection<E>
      繼承者 java.util.AbstractSet<E>
型別參數:
E - 此 set 所維護的元素的型別
所有已實作的介面:
Iterable<E>, Collection<E>, Set<E>
直接已知子類別:
ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, TreeSet

public abstract class AbstractSet<E>
extends AbstractCollection<E>
implements Set<E>

此類別提供 Set 介面的骨幹實作,從而最大限度地減少了實作此介面所需的工作。

通過擴展此類別來實作一個 set 的過程與通過擴展 AbstractCollection 來實作 Collection 的過程是相同的,除了此類別的子類別中的所有方法和建構子都必須服從 Set 介面所強加的額外限制(例如,add 方法必須不允許將一個物件的多個實例添加到一個 set 中)。

注意,此類別並沒有覆寫 AbstractCollection 類別中的任何實作。它僅僅添加了 equalshashCode 的實作。

此類別是 Java Collections Framework 的成員。

從以下版本開始:
1.2
另請參見:
Collection, AbstractCollection, Set

建構子摘要
protected AbstractSet()
          單獨的建構子。
 
方法摘要
 boolean equals(Object o)
          比較指定對象與此 set 的相等性。
 int hashCode()
          返回此 set 的雜湊碼值。
 boolean removeAll(Collection<?> c)
          從此 set 中移除包含在指定 collection 中的所有元素(可選操作)。
 
從類別 java.util.AbstractCollection 繼承的方法
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray, toString
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
從介面 java.util.Set 繼承的方法
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, toArray, toArray
 

建構子詳細資訊

AbstractSet

protected AbstractSet()
單獨的建構子。(由子類別建構子調用,通常是隱式的。)

方法詳細資訊

equals

public boolean equals(Object o)
比較指定對象與此 set 的相等性。如果給定對象也是一個 set,兩個 set 的大小相等,並且給定 set 的每個成員都包含在此 set 中,則返回 true。這確保 equals 方法在 Set 介面的不同實作間正常工作。

此實作首先檢查指定的物件是否是此 set;如果是,則返回 true。然後,它將檢查指定的物件是否是一個大小與此 set 的大小相等的 set;如果不是,則返回 false。如果是,則返回 containsAll((Collection) o)

指定者:
介面 Collection<E> 中的 equals
指定者:
介面 Set<E> 中的 equals
覆寫:
類別 Object 中的 equals
參數:
o - 要與此 set 進行相等性比較的物件
返回:
如果指定的物件等於此 set,則返回 true
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此 set 的雜湊碼值。set 的雜湊碼被定義為該 set 中元素的雜湊碼的總和,其中 null 元素的雜湊碼被定義為 0。這確保了 s1.equals(s2) 意味著對於任何兩個 set s1s2,都有 s1.hashCode()==s2.hashCode(),正如 Object.hashCode() 的常規協定所要求的。

此實作對 set 進行迭代,在 set 的每個元素上調用 hashCode 方法,併合計結果。

指定者:
介面 Collection<E> 中的 hashCode
指定者:
介面 Set<E> 中的 hashCode
覆寫:
類別 Object 中的 hashCode
返回:
此 set 的雜湊碼值。
另請參見:
Object.equals(Object), Set.equals(Object)

removeAll

public boolean removeAll(Collection<?> c)
從此 set 中移除包含在指定 collection 中的所有元素(可選操作)。如果指定 collection 也是一個 set,則此操作有效地修改此 set,從而其值成為兩個 set 的不對稱差集

通過在此 set 和指定 collection 上調用 size 方法,此實作可以確定哪一個更小。如果此 set 中的元素更少,則該實作將在此 set 上進行迭代,依次檢查迭代器返回的每個元素,查看它是否包含在指定的 collection 中。如果包含它,則使用迭代器的 remove 方法從此 set 中將其移除。如果指定 collection 中的元素更少,則該實作將在指定的 collection 上進行迭代,並使用此 set 的 remove 方法,從此 set 中移除迭代器返回的每個元素。

注意,如果 iterator 方法返回的迭代器沒有實作 remove 方法,則此實作拋出 UnsupportedOperationException

指定者:
介面 Collection<E> 中的 removeAll
指定者:
介面 Set<E> 中的 removeAll
覆寫:
類別 AbstractCollection<E> 中的 removeAll
參數:
c - 套件含將從此 set 中移除的元素的 collection
返回:
如果此 set 由於調用而發生更改,則返回 true
拋出:
UnsupportedOperationException - 如果此 set 不支持 removeAll 操作
ClassCastException - 如果此 set 元素的類別與指定 collection 不相容(可選)
NullPointerException - 如果此 set 套件含一個 null 元素並且指定 collection 不允許 null 元素(可選),或者指定 collection 為 null
另請參見:
AbstractCollection.remove(Object), AbstractCollection.contains(Object)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only