AbstractSet 類覆蓋了 equals() 和 hashCode() 方法,以確保兩個相等的集返回相同的散列碼。若兩個集大小相等且包含相同元素,則這兩個集相等。按定義,集散列碼是集中元素散列碼的總和。因此,不論集的內部順序如何,兩個相等的集會報告相同的散列碼。
基本介紹
- 中文名:AbstractSet
- 外文名:AbstractSet
- 解釋:散列碼
- 作用:構造
- 對象:元素
- 指定者:接口 Collection<E> 中的 equals
簡介,直接已知子類,構造方法摘要,方法詳細信息,
簡介
java.util
類 AbstractSet<E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
所有已實現的接口:
Iterable<E>, Collection<E>, Set<E>
直接已知子類
CopyOnWriteArraySet, EnumSet, HashSet, TreeSet
public abstract class AbstractSet<E>extends AbstractCollection<E>implements Set<E>此類提供 Set 接口的骨幹實現,從而最大限度地減少了實現此接口所需的工作。
通過擴展此類來實現一個 set 的過程與通過擴展 AbstractCollection 來實現 Collection 的過程是相同的,除了此類的子類中的所有方法和構造方法都必須服從 Set 接口所強加的額外限制(例如,add 方法必須不允許將一個對象的多個實例添加到一個 set 中)。
注意,此類並沒有重寫 AbstractCollection 類中的任何實現。它僅僅添加了 equals 和 hashCode 的實現。
此類是 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
方法詳細信息
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(), Hashtabl
hashCode
public int hashCode()返回此 set 的哈希代碼值。set 的哈希代碼被定義為該 set 中元素的哈希代碼的總和。這確保了 s1.equals(s2) 意味著對於任何兩個 set s1 和 s2,都有 s1.hashCode()==s2.hashCode(),正如 Object.hashCode 的常規協定所要求的。
此實現對 set 進行枚舉,在 collection 中的每個元素上調用 hashCode 方法,併合計結果。
指定者:
接口 Collection<E> 中的 hashCode
指定者:
接口 Set<E> 中的 hashCode
覆蓋:
類 Object 中的 hashCode
返回:
此 set 的哈希代碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable
------------------------------------------------------------------------------
removeAll
public boolean removeAll(Collection<?> c)從此 set 中移除包含在指定 collection 中的所有元素(可選操作)。
通過在此 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 中移除的元素。
返回:
如果此 set 由於此方法的調用而發生改變,則返回 true。
拋出:
UnsupportedOperationException - 如果此 set 不支持 removeAll 操作。
NullPointerException - 如果指定的 collection 為 null。
另請參見:
AbstractCollection.remove(Object), AbstractCollection.contains(Object)