對比分析HashMap、LinkedHashMap、TreeMap


前面花了4章對HashMap、LinkedHashMap以及TreeMap的原理實現進行了講解,本章對它們進行簡單的對比分析。

這里簡單提一下,為什么前面沒有單獨一章來講HashTable,HashTable是基於陳舊的Dictionary來實現的,效率上比起HashMap差很多,同時其唯一的優勢“線程安全”的實現機制效率也是非常差的,現在一般都用ConcurrentHashMap,所以這個類基本上已經算是廢棄了。

下面通過一個表格從各方面對比分析HashMap、LinkedHashMap、TreeMap

HashMap LinkedHashMap TreeMap
原理 HashMap擴容機制及存取原理 LinkedHashMap如何保證順序性 TreeMap原理實現及常用方法
線程安全
初始容量 16 16 0
存儲結構 數組+鏈表/紅黑樹 數組+鏈表/紅黑樹,HashMap子類 紅黑樹
順序規則 取值無順序 取值按插入的順序/按修改的順序,根據accessOrder控制 插入時按key的自然順序或者自定義順序
存儲特點 最多一條記錄的key為null,可以多條記錄value為null 最多一條記錄的key為null,可以多條記錄value為null 當為key的自然順序存儲時key不能為null,當自定義順序時,通過傳入的Comparator的實現控制
插入效率 較高(因為需要不斷Compare比較)
遍歷效率 較高(遍歷后會改變存儲順序) 較高
使用場景 使用最多,絕大多數無需排序的情況都可使用 需要插入的順序和取出的順序一樣的情況下 需要按照key的自然順序甚至於自定義順序的情況下
使用場景舉例 - 如我們對領導進行排名,對城市的經濟發展進行排名等 如我們要展示周一到周五的消費情況,數據庫里只取到了周二、周五的消費統計數據,這時將數據庫的統計數據和手動構建消費為0的周一、三、五的數據按順序組裝,這時用TreeMap會非常方便

總結:

本文從線程安全、初始容量、存儲結構、順序規則、存儲特點、插入效率、遍歷效率、使用場景及舉例。另外:前面提到的插入效率和遍歷效率的高、較高都是在大數量的情況下,當數據量少的情況下基本沒有區別,若有不對之處,請批評指正,望共同進步,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM