java集合中HashMap、HashTable、HashSet的區別

HashMap基於hashing原理,通過put()和get()方法儲存和獲取對象。

HashMap和HashTable的區別

HashMap和HashTable都實現了Map接口。
主要的區別有:線程安全性,同步(synchronization),以及速度。
HashMap幾乎可以等價於HashTable。
HashMap是非同步的,並且HashMap可以接受爲null的鍵值(key)和值(value),而HashTable則不行。
HashTable是同步的,意味着HashTable是線程安全的,多個線程可以共享一個HashTable;而多個線程是不能共享HashMap的。
Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴展性更好。
另一個區別是HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTable的enumerator迭代器。
HashMap可以通過下面的語句進行同步:Map m = Collections.synchronizeMap(hashMap);

HashMap和HashSet的區別

HashSet實現了Set接口,它不允許集合中有重複的值,HashMap實現了Map接口,Map接口對鍵值對進行映射。
HashSet擴展了HashMap,所以底層還是用到map存儲,存儲實現同map一致,HashMap儲存鍵值,HashSet存儲對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章