【Map介紹】
阿新 • • 發佈:2019-01-31
style div 紅黑樹 自然 left als 返回值 -a 重復 Map(雙列集合)
A:Map 集合的數據結構僅僅針對鍵有效,與值無關。
B:存儲的是鍵值對形式的元素,鍵唯一,值可重復。
HashMap
底層數據結構是哈希表。線程不安全,效率高
哈希表依賴兩個方法:hashCode()和 equals()
執行順序:
首先判斷 hashCode()值是否相同
是:繼續執行 equals(),看其返回值
是 true:說明元素重復,不添加
是 false:就直接添加到集合
否:就直接添加到集合
最終:
自動生成 hashCode()和 equals()即可
LinkedHashMap
底層數據結構由鏈表和哈希表組成。
由鏈表保證元素有序。
由哈希表保證元素唯一。
Hashtable
底層數據結構是哈希表。線程安全,效率低
哈希表依賴兩個方法:hashCode()和 equals()
執行順序:
首先判斷 hashCode()值是否相同
是:繼續執行 equals(),看其返回值
是 true:說明元素重復,不添加
是 false:就直接添加到集合
否:就直接添加到集合
最終:
自動生成 hashCode()和 equals()即可
TreeMap
底層數據結構是紅黑樹。(是一種自平衡的二叉樹) 如何保證元素唯一性呢?
根據比較的返回值是否是 0 來決定
如何保證元素的排序呢? 兩種方式
自然排序(元素具備比較性)
讓元素所屬的類實現 Comparable 接口
比較器排序(集合具備比較性)
讓集合接收一個 Comparator 的實現類對象
【Map介紹】