HashSet與HashMap的區別

2021-08-14 23:16:48 字數 1141 閱讀 9270

面試中經常被問到hashmap與hashset的區別。於是本渣靜下心來總結了一下hashset與hashmap的區別。

先了解一下hashmap跟hashset

hashset

hashset實現了set介面,它不允許集合中出現重複元素。當我們提到hashset時,第一件事就是在將物件儲存在

hashset之前,要確保重寫hashcode()方法和equals()方法,這樣才能比較物件的值是否相等,確保集合中沒有

儲存相同的物件。如果不重寫上述兩個方法,那麼將使用下面方法預設實現:

public boolean add(object obj)方法用在set新增元素時,如果元素值重複時返回 "false",如果新增成功則返回"true"

hashmap

hashmap實現了map介面,map介面對鍵值對進行對映。map中不允許出現重複的鍵(key)。map介面有兩個基本的實現

treemap和hashmap。treemap儲存了物件的排列次序,而hashmap不能。hashmap可以有空的鍵值對(key(null)-value(null))

hashmap是非執行緒安全的(非synchronize),要想實現執行緒安全,那麼需要呼叫collections類的靜態方法synchronizemap()實現。

public object put(object key,object value)方法用來將元素新增到map中。

hashset與hashmap的區別:

hashmap

hashset

實現了map介面

實現set介面

儲存鍵值對

僅儲存物件

呼叫put()向map中新增元素

呼叫add()方法向set中新增元素

hashmap使用鍵(key)計算hashcode

hashset使用成員物件來計算hashcode值,

對於兩個物件來說hashcode可能相同,

所以equals()方法用來判斷物件的相等性,

如果兩個物件不同的話,那麼返回false

hashmap相對於hashset較快,因為它是使用唯一的鍵獲取物件

hashset較hashmap來說比較慢

HashMap與HashSet的區別

hashset hashset實現了set介面,它不允許集合中出現重複元素。當我們提到hashset時,第一件事就是在將物件儲存在 hashset之前,要確保重寫hashcode 方法和equals 方法,這樣才能比較物件的值是否相等,確保集合中沒有 儲存相同的物件。如果不重寫上述兩個方法,那麼將使...

HashSet與HashMap的區別

hashset 集合不允許儲存相同的元素,它底層實際上使用 hashmap 來儲存元素的,不過關注的只是key元素,所有 value元素預設為 object類物件.hashset 的構造方法 hashset底層用來儲存元素的結構,實際上使用hashmap來儲存 private transient h...

HashSet 與HashMap底層實現

1.hashset底層通過包裝hashmap來實現,hashset在新增乙個值的時候,實際上是將此值作為hashmap中的key來進行儲存。2.hashmap的底層實現是通過初始化化乙個entry陣列來實現key value的儲存。3.在hashmap的entry中有四個變數,key value h...