1. 程式人生 > >HashMap, HashTable, HashTree, LinkedHashMap區別分析

HashMap, HashTable, HashTree, LinkedHashMap區別分析

java為資料結構中的對映定義了一個介面java.util.Map;它有四個實現類,分別是HashMap、Hashtable、LinkedHashMap和TreeMap.

Map主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複(重複了覆蓋了),但允許值重複。

Hashmap 是一個最常用的Map,它根據鍵的HashCode值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。HashMap最多隻允許一條記錄的鍵為Null;允許多條記錄的值為 Null;HashMap不支援執行緒的同步,即任一時刻可以有多個執行緒同時寫HashMap;可能會導致資料的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable與 HashMap類似,它繼承自Dictionary類,不同的是:它不允許記錄的鍵或者值為空;它支援執行緒的同步,即任一時刻只有一個執行緒能寫Hashtable,因此也導致了 Hashtable在寫入時會比較慢。

LinkedHashMap是HashMap的一個子類,儲存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的.也可以在構造時用帶引數,按照應用次數排序。在遍歷的時候會比HashMap慢,不過有種情況例外,當HashMap容量很大,實際資料較少時,遍歷起來可能會比LinkedHashMap慢,因為LinkedHashMap的遍歷速度只和實際資料有關,和容量無關,而HashMap的遍歷速度和他的容量有關。

TreeMap實現SortMap介面,能夠把它儲存的記錄根據鍵排序,預設是按鍵值的升序排序,也可以指定排序的比較器,當用Iterator 遍歷TreeMap時,得到的記錄是排過序的。

一般情況下,我們用的最多的是HashMap,在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好。如果需要輸出的順序和輸入的相同,那麼用LinkedHashMap可以實現,它還可以按讀取順序來排列.

HashMap是一個最常用的Map,它根據鍵的hashCode值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多隻允許一條記錄的鍵為NULL,允許多條記錄的值為NULL。

HashMap不支援執行緒同步,即任一時刻可以有多個執行緒同時寫HashMap,可能會導致資料的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

Hashtable與HashMap類似,不同的是:它不允許記錄的鍵或者值為空;它支援執行緒的同步,即任一時刻只有一個執行緒能寫Hashtable,因此也導致了Hashtable在寫入時會比較慢。

LinkedHashMap儲存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的。

在遍歷的時候會比HashMap慢TreeMap能夠把它儲存的記錄根據鍵排序,預設是按升序排序,也可以指定排序的比較器。當用Iterator遍歷TreeMap時,得到的記錄是排過序的。

相關推薦

HashMap, HashTable, HashTree, LinkedHashMap區別分析

java為資料結構中的對映定義了一個介面java.util.Map;它有四個實現類,分別是HashMap、Hashtable、LinkedHashMap和TreeMap. Map主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複(重複了覆蓋了),但允許值重複。

淺談java面試題hashmap,hashtable,treemap,linkedhashmap區別

淺談java面試題hashmap,hashtable,treemap,linkedhashmap的區別 hashmap hashtable TreeMap LinkedHashMap #先談談hashmap的實

hashMap,hashTable,concurrentHashmap的區別 面試必備:HashMapHashtable、ConcurrentHashMap的原理與區別

轉自  面試必備:HashMap、Hashtable、ConcurrentHashMap的原理與區別 果你去面試,面試官不問你這個問題,你來找我^_^ 下面直接來乾貨,先說這三個Map的區別: HashTable 底層陣列+連結串列實現,無論key還是value都不能為null,執行

Map與HashMap,Hashtable,HashSet的區別

前言: 自開始接手這JAVA寫的框架以來,遇到各種問題,發現與PYTHON,習慣真不一樣,在處理YAML資料時,用到hashmap,map等,各種糾結,幸虧得到,小林同學的幫忙,終於問題解決了,因此參考網路內容,順便總結下,這各種鬼的用法,當然,還是建議各位用PYTHON,PYTHON把各種型別轉換過

HashMapHashTableLinkedHashMap和TreeMap用法和區別

strong style 取出 能力 順序 ron public ons 保存 Java為數據結構中的映射定義了一個接口java.util.Map,它有四個實現類,分別是HashMap、HashTable、LinkedHashMap和TreeMap。本節實例主要介紹這4中實

Java: HashMapHashTableLinkedHashMap和TreeMap用法和區別

Java為資料結構中的對映定義了一個介面java.util.Map,它有四個實現類,分別是HashMap、HashTable、LinkedHashMap和TreeMap。本節例項主要介紹這4中例項的用法和區別。 關鍵技術剖析: Map用於儲存鍵值對,根據鍵得到值,因此不允許鍵重複,值可以重複。 l

HashMapHashTableLinkedHashMap區別

HashMap、HashTable、LinkedHashMap的區別 HashSet: HashMap: HashMap的容量為什麼必須為2的冪次 為什麼HashMap執行緒不安全 當給HashMap指定初始

HashMapHashtableLinkedHashMap、TreeMap、ConcurrentHashMap之間的區別-yellowcong

這些Map集合在面試中,經常會被問道和考到,所以總結一下,HashMap和Hashtable的區別在於1、多執行緒;2、主鍵是否為空;3、繼承的父類 通過Collections.synchronizedMap()的方法,將Map集合變成執行緒安全的。

【Java集合之Map】HashMapHashTable、TreeMap、LinkedHashMap區別

前言 Java為資料結構中的對映定義了一個介面java.util.Map,它有四個實現類,分別是HashMap、HashTable、LinkedHashMap和TreeMap。本節例項主要介紹這4中例項的用法和區別 幾種Map類結構 public clas

Java集合系列(四):HashMapHashtableLinkedHashMap、TreeMap的使用方法及區別

本篇部落格主要講解Map介面的4個實現類HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法以及三者之間的區別。 注意:本文中程式碼使用的JDK版本為1.8.0_191 值得注意的是,Map介面是獨立的介面,並沒有繼承Collection介面(這裡是重點,面試常問):

HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap

entry object類 ref feedback list dog ole exception line 本文由 ImportNew - 唐小娟 翻譯自 Programcreek。歡迎加入翻譯小組。轉載請見文末要求。Map是最重要的數據結

HashMap,TreeMap以及LinkedHashMap區別

header order equal 是否 通過 保持 extent row head HashMap:HashMap數據是無序的,根據鍵的hashCode進行數據的存取,對數據的訪問速度非常快,在map中插入刪除和定位元素,hashMap無疑是最好的選擇,TreeMap:

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

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

HashMap&HashTable&LinkedHashMap&TreeMap

最近發現對Map類的理解還不夠深刻 ,因此在這邊趕緊總結mark一下,Map類還是非常有用滴~ (1)HashMap與HashTable:    相同點:這兩者都儲存的鍵值對是無序的    不同點:HashMap執行緒不安全;Ha

HashTableHashMap、TreeMap的區別

  Map是集合框架的一部分(另一部分是Collection),以鍵值對的形式儲存和操作資料的資料容器。 HashTable是Java早期基於Hash表的實現的類,本身就是同步,不論是key還是value都不支援null值,而且因為同步開銷太大,現在基本不用這個容器了。

HashMap,HashTable,ConcurrentHashmap區別簡述

HashTable 底層陣列+連結串列實現,無論key還是value都不能為null,執行緒安全,實現執行緒安全的方式是在修改資料時鎖住整個HashTable,效率低,ConcurrentHashMap做了相關優化 初始size為11,擴容:newsize = olesize*

HashMapHashTable,ConcurrentHashmap區別和原理

HashTable 底層陣列+連結串列實現,無論key還是value都不能為null,執行緒安全,實現執行緒安全的方式是在修改資料時鎖住整個HashTable,效率低,ConcurrentHashMap做了相關優化 初始size為11,擴容:newsize

HashMapHashTable及ConcurrentHashMap區別及工作原理

前言 第一次寫部落格,水平有限可能有理解不到位或理解錯的地方。歡迎各位大神參與討論或指正。 Map在工作中的使用頻率較高,HashMap相關的問題在面試中也經常被問到。所以抽空在網上找資料對它們進行了系統的學習,作出以下幾點總結: HashMap、Hash

java 中 HashMapHashTable之間的區別

今天訪問java 併發程式設計網,看到一個翻譯徵集令,併發程式設計網的作者從stackoverflow 網站上選取了一些經典問答,遂決定翻譯幾篇 翻譯系列文章: 3.在java中如何建立一個記憶體洩露 譯文: 問題:   java 中HashMap 與Hash

Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具類和模擬鬥地主洗牌和發牌

1、Map集合概述和特點   * A:Map介面概述     * 檢視API可以知道:             * 將鍵對映到值的物件     &nb