3.2.2 Map接口

1.HashMap

Hashtable與HashMap區別:
  Hashtable大部分方法是同步的,HashMap沒有同步
  Hashtable不允許key或value爲null,HashMap可以
  映射算法不同

HashMap實現原理
  用key做hash算法得到hash值
  用hash值和數組長度計算得到數組下標索引
  用索引取得對應value

HashMap結構是鏈表數組,next指向下一個同hash值的Entry,如圖:



負載因子=元素個數/內部數組總大小
HashMap擴容操作會遍歷整個HashMap

2.LinkedHashMap

繼承自HashMap,維護了元素次序的HashMap,提供兩個順序:插入順序、最近訪問順序

LinkedHashMap結構是循環鏈表數組,next指向下一個同hash值的Entry,before指向指定順序中此Entry的前驅Entry,after同理,如圖:

注意:LinkedHashMap的get()方法會修改鏈表結構,因此不能在迭代器中使用get()

3.TreeMap

TreeMap內部基於紅黑樹,操作的時間複雜度 O(log n)
可對元素排序的Map,排序規則必須指定,指定方式二選一:
  1.TreeMap構造函數中注入Comparator
  2.key實現Comparable接口

發佈了42 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章