Java 集合框架之 Map

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

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