一.Map概述 0.前言 首先介紹Map集合,因為Set的實現類都是基于Map來實現的(如,HashSet是通過HashMap實現的,TreeSet是通過TreeMap實現的)。 1:介紹
Map是將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多只能映射到一個值。
此接口取代 Dictionary 類,后者完全是一個抽象類,而不是一個接口。
2:類圖關系

3:講解
(1):AbstractMap是一個抽象類, 繼承Map,實現了Map的大部分API,它的作用Map的實現類繼承它,可以減少重復編碼! (2):SortedMap是一個接口 繼承Map,自己也封裝一下方法,SortedMap中的內容是排序的鍵值對,排序的方法是通過比較器(Comparator)。SortedMap的排序方式有兩種:自然排序 或者 用戶指定比較器。 (3):ConcurrentMap是一個接口,并且繼承Map接口,在java.util.concurrent包下! (4):HashMap 繼承于AbstractMap,HashMap的內容是“鍵值對,但不保證次序”! (5): TreeMap 繼承于AbstractMap,且實現了NavigableMap接口;因此,TreeMap中的內容是鍵值對,有序的鍵值對!
(6):ConcurrentHashMap繼承AbstractMap實現ConcurrentMap,是一個并發的哈希表!此類與 Hashtable 相似,但與 HashMap 不同,它不 允許將 null 用作鍵或值。線程安全,但是實現方法和Hashtable完全不同(并發情況可以使用) 。
(7):Dictionary是一個抽象類(數據字典),HashTable繼承Dictionary并實現Map接口,也是鍵值對,但不保證次序!Hashtable是線程安全的,而且它支持通過Enumeration去遍歷。(現在使用很少,并發操作效率太低)
二.Map的API
void clear() 從此映射中移除所有映射關系(可選操作)。 boolean containsKey(Object key) 如果此映射包含指定鍵的映射關系,則返回 true。 boolean containsValue(Object value) 如果此映射將一個或多個鍵映射到指定值,則返回 true。 Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射關系的 Set 視圖。 boolean equals(Object o) 比較指定的對象與此映射是否相等。 V get(Object key) 返回指定鍵所映射的值;如果此映射不包含該鍵的映射關系,則返回 null。 int hashCode() 返回此映射的哈希碼值。 boolean isEmpty() 如果此映射未包含鍵-值映射關系,則返回 true。 Set<K> keySet() 返回此映射中包含的鍵的 Set 視圖。 V put(K key, V value) 將指定的值與此映射中的指定鍵關聯(可選操作)。 void putAll(Map<? extends K,? extends V> m) 從指定映射中將所有映射關系復制到此映射中(可選操作)。 V remove(Object key) 如果存在一個鍵的映射關系,則將其從此映射中移除(可選操作)。 int size() 返回此映射中的鍵-值映射關系數。 Collection<V> values() 返回此映射中包含的值的 Collection 視圖。其中:
entrySet()用于返回鍵-值集的Set集合 keySet()用于返回鍵集的Set集合 values()用戶返回值集的Collection集合嵌套類:
interface Entry<K,V> { 映射項(鍵-值對 )三.后言 接下來的博文介紹Map的實現類。主要介紹HashMap和TreeMap!其他的有時間會在去研究!
附:Map類圖(來源網絡)


參考文章:http://www.cnblogs.com/skywang12345/p/3308931.html
歡迎訪問我的csdn博客,我們一同成長!
“不管做什么,只要堅持下去就會看到不一樣!在路上,不卑不亢!”
博客首頁:http://blog.csdn.net/u010648555
新聞熱點
疑難解答