1. 程式人生 > >HashMap、Hashtable、LinkedHashMap、TreeMap比較

HashMap、Hashtable、LinkedHashMap、TreeMap比較

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&HashTable&LinkedHashMap&TreeMap

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

javaSE (二十七)HashMapHashtable的區別用集合模擬撲克牌鬥地主分發與檢視集合總結

1、HashMap和Hashtable的區別: 共同點:底層都是雜湊演算法,都是雙列集合 不同點: HashMap是執行緒不安全的,效率高,JDK1.2版本,可以儲存null鍵和值 HashMap是執行緒安全的,效率低,JDK1.0版本,不可以儲存null鍵和值

HashMap的底層實現原理HashMapHashTable的區別HashMap與HashSet的區別

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

HashMapHashtableLinkedHashMapTreeMap比較

Map有四個實現類,分別是HashMap   Hashtable   LinkedHashMap 和  TreeMap. Map主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複(重複了覆蓋了),但允許值重複。 Hashmap 是一個最常用的Map,它根據鍵的HashC

HashMapHashTableLinkedHashMapTreeMap用法和區別

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

Java: HashMapHashTableLinkedHashMapTreeMap用法和區別

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

LinkedHashMapTreeMapHashMap比較

import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class TestLinkedHashMap { publ

Java原始碼分析——java.util工具包解析(三)——HashMapTreeMapLinkedHashMapHashtable類解析

    Map,中文名字對映,它儲存了鍵-值對的一對一的關係形式,並用雜湊值來作為存貯的索引依據,在查詢、插入以及刪除時的時間複雜度都為O(1),是一種在程式中用的最多的幾種資料結構。Java在java.util工具包中實現了Map介面,來作為各大

HashTableHashMapLinkedHashMapTreeMap之間的區別

    Map介面   一:HashTable與HashMap之間的區別     HashTable HashMap

java面試整理(四)—— HashMapLinkedHashMapTreeMapHashtableHashSet和ConcurrentHashMap區別

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

深入淺出 Map 的實現(HashMapHashTableLinkedHashMapTreeMap

1、基本介紹 HashMap、TreeMap、HashTable、LinkedHashMap 共同實現了介面java.util.Map, 都是鍵值對形式,且map的key不允許重複 2、詳細介紹 a、HashMap 是一個最常用的Map實現方式,它根據鍵的HashCode

HashMapHashtableLinkedHashMapTreeMapConcurrentHashMap之間的區別-yellowcong

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

【Java集合之Map】HashMapHashTableTreeMapLinkedHashMap區別

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

HashMap HashtableTreeMapLinkedHashMapConcurrentHashMap WeakHashMap

介面java.util.Map,包括3個實現類:HashMap、Hashtable、TreeMap。當然還有LinkedHashMap、ConcurrentHashMap 、WeakHashMap。  Map是用來儲存鍵值對的資料結構,鍵值對在陣列中通過陣列下標來對其內容索引

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

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

Java集合框架(五)—— MapHashMapHashtablePropertiesSortedMapTreeMapWeakHashMapIdentityHashMapEnumMap

getprop color name 找到 文件 remove style 情況 read Map   Map用於保存具有映射關系的數據,因此Map集合裏保存著兩組值,一組值用於保存Map裏的key,另一組值用於保存Map裏的value,key和value

HashMapTreeMapHashtableHashSet和ConcurrentHashMap區別

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

Java中的集合MapHashMapHashtablePropertiesSortedMapTreeMapWeakHashMapIdentityHashMapEnumMap(五)

我們 obj ack ext.get 好處 output get () 硬盤 Map   Map用於保存具有映射關系的數據,因此Map集合裏保存著兩組值,一組值用於保存Map裏的key,另一組值用於保存Map裏的value,key和value都可以是任何引用類型的數

Java集合——HashMapHashTable以及ConCurrentHashMap異同比較

0. 前言 HashMap和HashTable的區別一種比較簡單的回答是: (1)HashMap是非執行緒安全的,HashTable是執行緒安全的。 (2)HashMap的鍵和值都允許有null存在,而HashTable則都不行。 (3)因為執行緒安全、雜湊效率的

HashMapHashTableLinkedHashMap的區別

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