HashSet與HashMap的區別
轉自:https://www.cnblogs.com/codercui/p/6841730.html
面試中經常被問到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底層實現原理/HashMap與HashTable區別/HashMap與HashSet區別HashMap
- HashTable HashMap HashSet區別(java)HashMapJava
- HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap區別HashMap
- HashSet/HashMap、TreeSet/TreeMap、LinkedHashSet/LinkedHashMap 區別HashMap
- HashMap 與HashTable的區別HashMap
- Java集合(5)一 HashMap與HashSetJavaHashMap
- HashSet和HashMapHashMap
- 關於HashSet與TreeSet的區別與聯絡
- 你真的瞭解HashSet 和HashMap的區別、優缺點、使用場景嗎?HashMap
- HashMap、Hashtable、ConcurrentHashMap的原理與區別HashMap
- hashmap與hashtable的區別,以及實現hashmap的同步操作HashMap
- HashMap、HashTable、HashSet詳解HashMap
- HashMap和HashSet深度解析HashMap
- Java的JDK下Hashtable與HashMap的區別JavaJDKHashMap
- 轉:Java中的HashSet, TreeSet, HashMap, TreeMapJavaHashMap
- Java HashMap 和 HashSet 的高效使用技巧JavaHashMap
- Hashmap 和Hashtable的區別HashMap
- HashMap和Hashtable的區別HashMap
- Hashtable和HashMap的區別HashMap
- 集合框架-HashMap&HashSet&LinkedHshMap框架HashMap
- HashMap、LinkedHashMap、HashTable、HashSet筆記HashMap筆記
- HashMap、HashTable、ConcurrentHashMap的區別HashMap
- 五分鐘看懂Hashtable原始碼以及與HashMap的區別原始碼HashMap
- 集合框架-HashMap和Hashtable的區別框架HashMap
- 關於HashMap和Hashtable的區別HashMap
- HashMap和Hashtable的詳細區別HashMap
- HashTable和HashMap的六點區別HashMap
- ConcurrentHashMap HashMap HashTable區別HashMap
- HashSet與HashMap比較——新增物件已存在處理方式一樣?HashMap物件
- Java集合框架原始碼剖析:HashSet 和 HashMapJava框架原始碼HashMap
- Java 集合框架 HashSet 和 HashMap 原始碼剖析Java框架HashMap原始碼
- C#中Hashtable和HashMap的區別C#HashMap
- ConcurrentHashMap和HashMap的一點區別HashMap
- 三,TreeMap和HashMap,TreeSet和HashMap的區別以及方法使用上的不同HashMap
- Java中HashMap,LinkedHashMap,TreeMap的區別[轉]JavaHashMap
- java複習之HashMap和Hashtable的區別JavaHashMap
- Java入門:Hashtable和HashMap的區別(轉)JavaHashMap
- 集合類HashMap,HashTable,ConcurrentHashMap區別?HashMap