淺談Java中的Map

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 進行排序,具體取決於使用的構造方法。 此實現不是同步的。

構造方法

成員方法



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章