1. 程式人生 > >HashMap和HashSet的區別,原來Hashset比HashMap查詢慢一些

HashMap和HashSet的區別,原來Hashset比HashMap查詢慢一些

轉自:  http://www.importnew.com/6931.html

HashMap和HashSet的區別是Java面試中最常被問到的問題。如果沒有涉及到Collection框架以及多執行緒的面試,可以說是不完整。而Collection框架的問題不涉及到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中沒有儲存相等的物件。如果我們沒有重寫這兩個方法,將會使用這個方法的預設實現。

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

什麼是HashMap

HashMap實現了Map介面,Map介面對鍵值對進行對映。Map中不允許重複的鍵。Map介面有兩個基本的實現,HashMap和TreeMap。TreeMap儲存了物件的排列次序,而HashMap則不能。HashMap允許鍵和值為null。HashMap是非synchronized的,但collection框架提供方法能保證HashMap synchronized,這樣多個執行緒同時訪問HashMap時,能保證只有一個執行緒更改Map。

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

你可以閱讀這篇文章看看HashMap的工作原理,以及

這篇文章看看HashMap和HashTable的區別。

HashSet和HashMap的區別

*HashMap* *HashSet*
HashMap實現了Map介面 HashSet實現了Set介面
HashMap儲存鍵值對 HashSet僅僅儲存物件
使用put()方法將元素放入map中 使用add()方法將元素放入set中
HashMap中使用鍵物件來計算hashcode值 HashSet使用成員物件來計算hashcode值,對於兩個物件來說hashcode可能相同,所以equals()方法用來判斷物件的相等性,如果兩個物件不同的話,那麼返回false
HashMap比較快,因為是使用唯一的鍵來獲取物件 HashSet較HashMap來說比較慢

相關推薦

HashMapHashSet區別,原來HashsetHashMap查詢一些

轉自:  http://www.importnew.com/6931.html HashMap和HashSet的區別是Java面試中最常被問到的問題。如果沒有涉及到Collection框架以及多執行緒的面試,可以說是不完整。而Collection框架的問題不涉及到Has

HashMap HashTable 區別

AC n) ati 只需要 試圖 external str enume 時間 來源:http://www.importnew.com/7010.html HashMap和Hashtable的區別 HashMap和Hashtable都實現了Map接口,但決定用哪一個之前先要弄

HashMapHashtable區別

-- 其它 serial on() 很大的 程序 fas cloneabl was 1. 類定義 這個從源碼中可以直接看出來,HashMap 繼承自 AbstractMap,而 Hashtabl 繼承自 Dictionary。 public class HashMap<

ConcurrentHashMaphashTable的區別HashMapTreeMap區別

ConcurrentHashMap集合了hashmap和hashtable 這兩張表的優勢: hashtable 每次操作都會鎖住真個結構 ConcurrentHashMap 鎖的方式是稍微細粒度 把資料分為了16個桶,每次get put remove 等操作,只需要對對應的

HashMapHashTable區別及Hash衝突解決方法

一、HashMap和HashTable主要有以下5個方面的區別: 1.繼承的父類不同   Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類。但二者都實現了Map介面。 2.對null物件的支援不同   HashMap是支援

HashMapHashtable 區別

Hashtable是執行緒安全,而HashMap則非執行緒安全 Hashtable的實現方法裡面都添加了sy

HashMap、TreeMap、Hashtable、HashSetConcurrentHashMap區別

擴展性 navig shc .net ica fin details blank table 一、HashMap和TreeMap區別 1、HashMap是基於散列表實現的,時間復雜度平均能達到O(1)。 TreeMap基於紅黑樹(一種自平衡二叉查找樹)實現的,時

【java】 HashMap的工作原理+HashMapHashtable的區別+HashMapHashSet區別

本文由 ImportNew - 唐小娟 翻譯自 Javarevisited。 HashMap的工作原理是近年來常見的Java面試題。幾乎每個Java程式設計師都知道HashMap,都知道哪裡要用HashMap,知道Hashtable和HashMa

Arraylistlinkedlist的區別hashmaphashtable的區別hashmaphashset的相同與不同,hashcode的用法

Arraylist和linkedlist的區別 相當於陣列和連結串列的區別:當arraylist中新增物件時對應的陣列長度就要改變,因此便於查詢(直接get(i)就ok)而不利於增刪改;相反linkedlist相當於連結串列可以進行增刪改,但是查詢要從第一個節點開始會浪費時

java面試整理(四)—— HashMap、LinkedHashMap、TreeMap、Hashtable、HashSetConcurrentHashMap區別

注:本篇博文大部分借鑑與該篇博文系列 知識點總結 HashMap HashMap是基於雜湊表的Map介面的非同步實現, 允許使用null值和null鍵(HashMap最多隻允許一條記錄的鍵為null,允許多條記錄的值為null。)。此類不保證對映的順

HashSetHashMapHashtable的區別

HashSet和HashMap都是Collection框架的一部分,它們讓我們能夠使用物件的集合。Collection框架主要有Set介面、List介面和Queue介面。Set集合不允許物件有重複的值;List允許重複,並可以對集合中的物件進行索引;Queue則

List、Map、Set的理解(LinkedListArrayList、VectorArrayList、HashMapHashTableHashSet區別與使用)

List特點:元素有放入順序,元素可重複 Map特點:元素按鍵值對儲存,無放入順序 Set特點:元素無放入順序,元素不可重複(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的) List介面有三

Arraylist linkedlist || hashset treeset. || hashMap TreeMap

blog hash算法 一次 重寫 固定 表結構 相同 當我 若有 參考:http://liuyuan418921673.iteye.com/blog/2256120 1. ArrayList和LinkedList的區別和使用場景 ArryList 與linkedLis

(轉)HashMap底層實現原理/HashMap與HashTable區別/HashMapHashSet區別

eem 實現原理 ger 銀行 索引 target 聲明 到你 們的 ①HashMap的工作原理 HashMap基於hashing原理,我們通過put()和get()方法儲存和獲取對象。當我們將鍵值對傳遞給put()方法時,它調用鍵對象的hashCode()方法來計算has

【轉】Java學習---HashMapHashSet的內部工作機制

link 實踐 離散 val 數據結構 結構 通過 如何 factor 【原文】https://www.toutiao.com/i6593863882484220430/ HashMap和HashSet的內部工作機制 HashMap 和 HashSet 內部是如何工作的?散

.集合Set,HashSet,TreeSet及其底層實現HashMap紅黑樹;Collection總結

ONE.Set集合 one.Set集合的特點  無序,唯一 TWO.HashSet集合 1.底層資料結構是雜湊表(是一個元素為連結串列的陣列) 2.那麼HashSet如何來實現元素的唯一性的呢? 通過一HashSet新增字串的案例檢視HashSet中add()的原始碼,

HashMapHashSet總結

本文是作者在專案過程中做的總結,內容既有借鑑其他大神的地方,也有自己結合當前專案的思考。若有錯誤的地方,歡迎指正!最後感謝以下作者的分享!! 參考來源1:http://www.importnew.com/7099.html 參考來源2:https://blog.csdn.net/chenss

17.集合Set,HashSet,TreeSet及其底層實現HashMap紅黑樹;Collection總結

ONE.Set集合 one.Set集合的特點 無序,唯一 TWO.HashSet集合 1.底層資料結構是雜湊表(是一個元素為連結串列的陣列) 2.那麼HashSet如何來實現元素的唯一性的呢? 通過一HashSet新增字串的案例檢視HashSet

HashMap底層實現原理/HashMap與HashTable區別/HashMapHashSet區別

①HashMap的工作原理 HashMap基於hashing原理,我們通過put()和get()方法儲存和獲取物件。當我們將鍵值對傳遞給put()方法時,它呼叫鍵物件的hashCode()方法來計算hashcode,讓後找到bucket位置來儲存值物件。當獲取物件時,通

HashMapHashSet原理及底層實現

HashMap底層用雜湊演算法實現,下面看一下雜湊算表的整體概括: 當map.put(“key”,”values”);的時候,底層是這樣的: static final Entry<?,?>[] EMPTY_TABLE = {}; transient E