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