下文筆者將從HashMap及HashSet的概念着手處理其不同之處,如下所示:
轉自:http://www.java265.com/JavaMianJing/202110/16347847421524.html
HashSet的簡介
HashSet實現Set接口
HashSet中的內容不允許有重復的值
當我們使用HashSet之前
需確保對象重寫equals()和hashCode()方法
然后比較對象的值是否相等
以確保set中沒有儲存相等的對象
當沒有重寫這兩個方法,將會使用這個方法的默認實現
//添加元素 public boolean add(object o);
HashMap的簡介
HashMap實現了Map接口
Map接口對鍵值對進行映射
Map中不允許重復的鍵key
Map接口有兩個基本的實現,HashMap和TreeMap
TreeMap保存了對象的排列次序,而HashMap則不能
HashMap允許鍵和值為null
HashMap是非synchronized的
但collection框架提供方法能保證HashMap synchronized
這樣多個線程同時訪問HashMap時,能保證只有一個線程更改Map
添加元素的方法 public Object put(Object Key,Object value)
根據以上的簡介說明,我們可以得出HashSet和HashMap的區別
HashMap | HashSet |
HashMap實現了Map接口 | HashSet實現了Set接口 |
HashMap儲存鍵值對 | HashSet僅僅存儲對象 |
使用put()方法將元素放入map中 | 使用add()方法將元素放入set中 |
HashMap中使用鍵對象來計算hashcode值 | HashSet使用成員對象來計算hashcode值,對於兩個對象來說hashcode可能相同,所以equals()方法用來判斷對象的相等性,如果兩個對象不同的話,那么返回false |
HashMap比較快,使用唯一的鍵來獲取對象 | HashSet較HashMap來說比較慢 |