Map概述
將鍵映射到值的對象。一個映射不能包含重複的鍵;每個鍵最多隻能映射到一個值。
Map接口和Collection接口有何不同:
- Map是雙列的,Collection是單列的
- Map的鍵唯一,Collection的子體系Set是唯一的
- Map集合的數據結構針對鍵有效,跟值無關;Collection集合的數據結構是針對元素有效
Entry
Map中還有一個嵌套接口Entry
成員方法
成員方法
Map中元素的遍歷
對於Map中的元素進行遍歷的時候,有兩種方式:
- 使用鍵來找值。先獲取Map中鍵的集合,再根據鍵獲取到其對應的值。
- 獲取Map中的鍵值對,在鍵值對中分別獲取鍵和值。
HashMap
基於哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵。
此類不保證映射的順序,特別是它不保證該順序恆久不變,即HashMap中的元素的存取順序是不一致的。此實現不是同步的。
構造方法
成員方法
HashMap和Hashtable的區別
HashMap和Hashtable在方法的使用上,沒有多大的區別。在線程安全上有區別。
HashMap:線程不安全,效率高,允許鍵和值是null。實現不是同步的。
Hashtable:線程安全,效率低,不允許鍵和值是null。實現是同步的。
LinkedHashMap
Map 接口的哈希表和鏈接列表實現,具有可預知的迭代順序。此實現與 HashMap 的不同之處在於,後者維護着一個運行於所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,該迭代順序通常就是將鍵插入到映射中的順序(插入順序),即LinkedHashMap中的元素的存取順序是一致的。
構造方法
成員方法
TreeMap
基於紅黑樹(Red-Black tree)的 NavigableMap 實現。該映射根據其鍵的自然順序進行排序,或者根據創建映射時提供的 Comparator 進行排序,具體取決於使用的構造方法。 此實現不是同步的。
構造方法
成員方法