一.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
java集合系列——java集合概述(一)
java集合系列——List集合之ArrayList介紹(二)
java集合系列——List集合之LinkedList介紹(三)
java集合系列——List集合之Vector介紹(四)
java集合系列——List集合之Stack介紹(五)
java集合系列——List集合總結(六)
java集合系列——Map介紹(七)
java集合系列——Map之HashMap介紹(八)
java集合系列——Map之TreeMap介紹(九)
java集合系列——Set之HashSet和TreeSet介紹(十)
如果帥氣(美麗)、睿智(聰穎),和我一樣簡單善良的你看到本篇博文中存在問題,請指出,我虛心接受你讓我成長的批評,謝謝閱讀!
祝你今天開心愉快!
歡迎通路我的csdn部落格,我們一同成長!
“不管做什麼,隻要堅持下去就會看到不一樣!在路上,不卑不亢!”
部落格首頁:http://blog.csdn.net/u010648555