Map
Map接口實作的是一組Key-Value的鍵值對的組合。 Map接口不直接繼承于Collection接口,因為它包裝的是一組成對的“鍵-值”對象的集合,而且在Map接口的集合中也不能有重複的key出現,因為每個鍵隻能與一個成員元素相對應。
Map有兩種比較常用的實作:HashMap和TreeMap等。
HashMap:基于哈希表實作。使用HashMap要求添加的鍵類明确定義了hashCode()和equals(),為了優化HashMap空間的使用,您可以調優初始容量和負載因子。
(1)HashMap(): 建構一個空的哈希映像
(2)HashMap(Map m): 建構一個哈希映像,并且添加映像m的所有映射
(3)HashMap(int initialCapacity): 建構一個擁有特定容量的空的哈希映像
(4)HashMap(int initialCapacity, float loadFactor): 建構一個擁有特定容量和加載因子的空的哈希映像
TreeMap:基于紅黑樹實作。TreeMap沒有調優選項,因為該樹總處于平衡狀态。
(1)TreeMap():建構一個空的映像樹
(2)TreeMap(Map m): 建構一個映像樹,并且添加映像m中所有元素
(3)TreeMap(Comparator c): 建構一個映像樹,并且使用特定的比較器對關鍵字進行排序
(4)TreeMap(SortedMap s): 建構一個映像樹,添加映像樹s中所有映射,并且使用與有序映像s相同的比較器排序
兩種正常Map性能
HashMap:适用于在Map中插入、删除和定位元素。
Treemap:适用于按自然順序或自定義順序周遊鍵(key)。
總結
HashMap通常比TreeMap快一點(樹和哈希表的資料結構使然),建議多使用HashMap,在需要排序的Map時候才用TreeMap。