類 HASHSET<E>
所有已實現的接口:Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>
此類實現 Set 接口,由哈希表(實際上是一個 HashMap 實例)支持。它不保證 set 的迭代順序;特別是它不保證該順序恒久不變。此類允許使用 null 元素。
此類為基本操作提供了穩定性能,這些基本操作包括 add、remove、contains 和 size,假定哈希函數將這些元素正確地分布在桶中。對此 set 進行迭代所需的時間與 HashSet 實例的大小(元素的數量)和底層 HashMap 實例(桶的數量)的“容量”的和成比例。因此,如果迭代性能很重要,則不要將初始容量設置得太高(或將加載因子設置得太低)。
注意,此實現不是同步的。如果多個線程同時訪問一個哈希 set,而其中至少一個線程修改了該 set,那么它必須 保持外部同步。這通常是通過對自然封裝該 set 的對象執行同步操作來完成的。如果不存在這樣的對象,則應該使用 Collections.synchronizedSet 方法來“包裝” set。最好在創建時完成這一操作,以防止對該 set 進行意外的不同步訪問:
Set s = Collections.synchronizedSet(new HashSet(...));
類 HASHMAP<K,V>
所有已實現的接口:Serializable, Cloneable, Map<K,V>
基于哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,并允許使用 null 值和 null 鍵。(除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。
類 CONCURRENTHASHMAP<K,V>
所有已實現的接口:
Serializable, ConcurrentMap<K,V>, Map<K,V>
支持獲取的完全并發和更新的所期望可調整并發的哈希表。此類遵守與 Hashtable 相同的功能規范,并且包括對應于 Hashtable 的每個方法的方法版本。不過,盡管所有操作都是線程安全的,但獲取操作不 必鎖定,并且不 支持以某種防止所有訪問的方式鎖定整個表。此類可以通過程序完全與 Hashtable 進行互操作,這取決于其線程安全,而與其同步細節無關。
此類與 Hashtable 相似,但與 HashMap 不同,它不 允許將 null 用作鍵或值。