如果看過 HashSet
源碼的話就應該知道:HashSet 底層就是基於 HashMap 實現的。(HashSet 的源碼非常非常少,因爲除了 clone()
、writeObject()
、readObject()
是 HashSet 自己不得不實現之外,其他方法都是直接調用 HashMap 中的方法。
HashMap | HashSet |
---|---|
實現了Map接口 | 實現Set接口 |
存儲鍵值對 | 僅存儲對象 |
調用 put() 向map中添加元素 |
調用 add() 方法向Set中添加元素 |
HashMap使用鍵(Key)計算Hashcode | HashSet使用成員對象來計算hashcode值,對於兩個對象來說hashcode可能相同,所以equals()方法用來判斷對象的相等性, |