1. 程式人生 > >Java集合---HashMap與HashSet比較

Java集合---HashMap與HashSet比較

HashSet HashMap 的比較

HashMap HashSet 都是 collection 框架的一部分,它們讓我們能夠使用物件的集合。collection 框架有自己的介面和實現,主要分為 Set 介面,List 介面和 Queue 介面。它們有各自的特點,Set 的集合裡不允許物件有重複的值,List 允許有重複,它對集合中的物件進行索引,Queue 的工作原理是 FCFS 演算法(First Come, First Serve)

首先讓我們來看看什麼是 HashMap HashSet,然後再來比較它們之間的分別。

什麼是 HashSet

HashSet 實現了 Set 介面,它不允許集合中有重複的值,當我們提到

HashSet 時,第一件事情就是在將物件儲存在 HashSet 之前,要先確保物件重寫 equals() hashCode()方法,這樣才能比較物件的值是否相等,以確保set中沒有儲存相等的物件。如果我們沒有重寫這兩個方法,將會使用這個方法的預設實現。

publicboolean add(Object o)方法用來在 Set 中新增元素,當元素值重複時則會立即返回 false,如果成功新增的話會返回 true

什麼是 HashMap

HashMap 實現了 Map 介面,Map 介面對鍵值對進行對映。Map 中不允許重複的鍵。Map 介面有兩個基本的實現,HashMap TreeMap

TreeMap 儲存了物件的排列次序,而 HashMap 則不能。HashMap 允許鍵和值為 nullHashMap 是非 synchronized 的,但 collection 框架提供方法能保證 HashMap synchronized,這樣多個執行緒同時訪問 HashMap 時,能保證只有一個執行緒更改 Map

publicObject put(Object Key,Object value)方法用來將元素新增到 map 中。

HashSet HashMap 的區別

HashMap

HashSet

HashMap實現了Map介面

HashSet實現了Set介面

HashMap

儲存鍵值對

HashSet僅僅儲存物件

使用put()方法將元素放入map

使用add()方法將元素放入set

HashMap中使用鍵物件來計算hashcode

HashSet使用成員物件來計算hashcode值,對於兩個物件來說hashcode可能相同,所以equals()方法用來判斷物件的相等性,如果兩個物件不同的話,那麼返回false

HashMap比較快,因為是使用唯一的鍵來獲取物件

HashSetHashMap來說比較慢