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接口