1 概述
存儲的元素以鍵-值的方式存在
2 特點
將鍵映射到值的對象,一個映射不能包含重複的鍵,每個鍵最多隻能映射一個值(可以爲null)。Map結合的數據結構只針對鍵有效,與值無關
3 Map<K, V> 功能概述
- 添加功能
V put(K key, V value):添加元素,若添加的鍵不存在,則直接保存並返回null。若添加的鍵已存在,覆蓋該鍵對應的值,並返回原來的值。
void putAll(Map<? extends K,? extends V> m):添加鍵值對集合
- 刪除功能
void clear():刪除所有鍵值對
V remove(Object key):根據鍵值移除鍵值對
- 判斷功能
boolean containsKey(Object key):判斷集合中是否包含指定的鍵
boolean containsValue(Object value):判斷集合是否包含指定值
boolean isEmpty():判斷集合是否爲空
- 獲取功能
Set<Map.Entry<K, V>> entrySet():獲取鍵值對集合
V get(Object key):根據鍵獲取值
Set<K> keySet():獲取鍵值集合
Collection<V> values():獲取值集合
- 長度功能
int size():獲取鍵值對個數
4 常用子類
4.1 HashMap
通過依賴hashCode()和equals()方法來保證插入元素的唯一性。首先比較集合中是否存在和當前插入元素的hash值,如果不存在則直接添加到集合,若存在則繼續用equals()比較該元素和當前插入元素,如果不同就添加,相同不添加。
所以被添加的引用類型需要重寫父類的hashCode()和equals()方法,爲提升代碼的效率,應該儘量使對象的hash值不同
4.2 LinkedHashMap
HashMap的子類,是Map接口的哈希表和鏈表的實現,具有可預知的迭代順序。由哈希表結構保證鍵的唯一性,鏈表保證鍵的有序
4.3 TreeMap
(1) 概述
基於紅黑樹的Map接口實現,元素唯一,可根據其構造方法對鍵進行排序,有鍵自然排序和Comparator排序兩種。
(2) 自然排序
自然排序依賴於鍵的compareTo()方法,而該方法定義在Comparable接口中,所以要實現鍵的自然排序,該鍵類要實現Comparable接口。
(3) 實現Comparator接口的的compare()方法
5 HashMap<K, V>和Hashtable<K, V>的區別
二者都是Map的哈希表結構實現,除了以下不同點以爲功能基本相似
HashMap:線程不安全,效率高,允許鍵爲null、允許值爲null
Hashtable:線程安全,效率低,不允許鍵爲null、不允許值爲null