1. Map集合
Java.util.Map接口
|--HashMap實現類
|--TreeMap實現類
2. HashMap實現類
Map接口定義的集合又稱爲查找表,用於存儲所謂“Key-Value”鍵值對。Key可以看成是Value的索引。而往往Key是Value的一部分內容。
1)Key不可以重複,但所保存的Value可以重複。
2)根據內部結構的不同,Map接口有多種實現類,其中常用的有內部爲hash表實現的HashMap和內部爲排序二叉樹實現的TreeMap。同樣這樣的數據結構在存放數據時,也不建議存放兩種以上的數據類型,所以,通常我們在使用Map時也要使用泛型約束存儲內容的類型。
3)創建Map時使用泛型,這裏要約束兩個類型,一個是key的類型,一個是value的類型。
4)基本原理圖:
5)HashMap集合中常用的方法:
① V put(K Key,V value):將元素以Key-Value的形式放入map。若重複保存相同的key時,實際的操作是替換Key所對應的value值。
② V get(Object key):返回key所對應的value值。如果不存在則返回null。
③ boolean containsKey(Object Key):判斷集合中是否包含指定的Key。
④ boolean containsValue(Object value):判斷集合中是否包含指定的Value。
6)若給定的key在map中不存在則返回null,所以,原則上在從map中獲取元素時要先判斷是否有該元素,之後再使用,避免空指針異常的出現。Map在獲取元素時非常有針對性,集合想獲取元素需要遍歷集合內容,而Map不需要,你只要給他特定的key就可以獲取該元素。
案例12:
案例13:
結果:
7)遍歷HashMap方式一:獲取所有的key並根據key獲取value從而達到遍歷的效果(即迭代Key)。keySet()方法:是HashMap獲取所有key的方法,該方法可以獲取保存在map下所有的key並以Set集合的形式返回。
案例14:
結果:
8)Entry類,遍歷HashMap方式二:以“鍵值對”的形式迭代。Map支持另一個方法entrySet():該方法返回一個Set集合,裏面的元素是map中的每一組鍵值對,Map以Entry類的實例來描述每一個鍵值對。其有兩個方法:getKey()獲取key值;getValue()獲取value值。Entry也需要泛型的約束,其約束的泛型應該和Map相同!Entry所在位置:java.util.Map.Entry。
案例15:
結果: