天天看點

java集合系列——Map介紹(七)

一.Map概述

0.前言

首先介紹Map集合,因為Set的實作類都是基于Map來實作的(如,HashSet是通過HashMap實作的,TreeSet是通過TreeMap實作的)。

1:介紹

Map是将鍵映射到值的對象。一個映射不能包含重複的鍵;每個鍵最多隻能映射到一個值。

此接口取代 Dictionary 類,後者完全是一個抽象類,而不是一個接口。

2:類圖關系

java集合系列——Map介紹(七)

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類圖(來源網絡)

java集合系列——Map介紹(七)
java集合系列——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