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存儲對象。