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 的實現類對象