亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

JAVA Map架構和API介紹

2019-11-26 15:55:04
字體:
來源:轉載
供稿:網友

首先,我們看看Map架構。

如上圖:
Map 是映射接口,Map中存儲的內容是鍵值對(key-value)。
AbstractMap 是繼承于Map的抽象類,它實現了Map中的大部分API。其它Map的實現類可以通過繼承AbstractMap來減少重復編碼。
SortedMap 是繼承于Map的接口。SortedMap中的內容是排序的鍵值對,排序的方法是通過比較器(Comparator)。
NavigableMap 是繼承于SortedMap的接口。相比于SortedMap,NavigableMap有一系列的導航方法;如"獲取大于/等于某對象的鍵值對"、“獲取小于/等于某對象的鍵值對”等等。
TreeMap 繼承于AbstractMap,且實現了NavigableMap接口;因此,TreeMap中的內容是“有序的鍵值對”!
HashMap 繼承于AbstractMap,但沒實現NavigableMap接口;因此,HashMap的內容是“鍵值對,但不保證次序”!
Hashtable 雖然不是繼承于AbstractMap,但它繼承于Dictionary(Dictionary也是鍵值對的接口),而且也實現Map接口;因此,Hashtable的內容也是“鍵值對,也不保證次序”。但和HashMap相比,Hashtable是線程安全的,而且它支持通過Enumeration去遍歷。
WeakHashMap 繼承于AbstractMap。它和HashMap的鍵類型不同,WeakHashMap的鍵是“弱鍵”。

有了上面的總體框架之后,我們先來看看各個接口和抽象類的介紹;后面再對各個實現類進行詳細說明。

1 Map
Map的定義如下:

復制代碼 代碼如下:

public interface Map<K,V> { }

Map 是一個鍵值對(key-value)映射接口。Map映射中不能包含重復的鍵;每個鍵最多只能映射到一個值。
Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關系集的形式查看某個映射的內容。
Map 映射順序。有些實現類,可以明確保證其順序,如 TreeMap;另一些映射實現則不保證順序,如 HashMap 類。
Map 的實現類應該提供2個“標準的”構造方法:第一個,void(無參數)構造方法,用于創建空映射;第二個,帶有單個 Map 類型參數的構造方法,用于創建一個與其參數具有相同鍵-值映射關系的新映射。實際上,后一個構造方法允許用戶復制任意映射,生成所需類的一個等價映射。盡管無法強制執行此建議(因為接口不能包含構造方法),但是 JDK 中所有通用的映射實現都遵從它。

Map的API
復制代碼 代碼如下:

abstract void                 clear()
abstract boolean              containsKey(Object key)
abstract boolean              containsValue(Object value)
abstract Set<Entry<K, V>>     entrySet()
abstract boolean              equals(Object object)
abstract V                    get(Object key)
abstract int                  hashCode()
abstract boolean              isEmpty()
abstract Set<K>               keySet()
abstract V                    put(K key, V value)
abstract void                 putAll(Map<? extends K, ? extends V> map)
abstract V                    remove(Object key)
abstract int                  size()
abstract Collection<V>        values()

說明:
(01) Map提供接口分別用于返回 鍵集、值集或鍵-值映射關系集。
        entrySet()用于返回鍵-值集的Set集合
        keySet()用于返回鍵集的Set集合
       values()用戶返回值集的Collection集合
       因為Map中不能包含重復的鍵;每個鍵最多只能映射到一個值。所以,鍵-值集、鍵集都是Set,值集時Collection。
(02) Map提供了“鍵-值對”、“根據鍵獲取值”、“刪除鍵”、“獲取容量大小”等方法。

2 Map.Entry
Map.Entry的定義如下:

復制代碼 代碼如下:

interface Entry<K,V> { }

Map.Entry是Map中內部的一個接口,Map.Entry是鍵值對,Map通過 entrySet() 獲取Map.Entry的鍵值對集合,從而通過該集合實現對鍵值對的操作。
Map.Entry的API
復制代碼 代碼如下:

abstract boolean     equals(Object object)
abstract K             getKey()
abstract V             getValue()
abstract int         hashCode()
abstract V             setValue(V object)
 

3 AbstractMap
AbstractMap的定義如下:
復制代碼 代碼如下:

public abstract class AbstractMap<K,V> implements Map<K,V> {}

AbstractMap類提供 Map 接口的骨干實現,以最大限度地減少實現此接口所需的工作。
要實現不可修改的映射,編程人員只需擴展此類并提供 entrySet 方法的實現即可,該方法將返回映射的映射關系 set 視圖。通常,返回的 set 將依次在 AbstractSet 上實現。此 set 不支持 add() 或 remove() 方法,其迭代器也不支持 remove() 方法。
要實現可修改的映射,編程人員必須另外重寫此類的 put 方法(否則將拋出 UnsupportedOperationException),entrySet().iterator() 返回的迭代器也必須另外實現其 remove 方法。
AbstractMap的API
復制代碼 代碼如下:

abstract Set<Entry<K, V>>     entrySet()
         void                 clear()
         boolean              containsKey(Object key)
         boolean              containsValue(Object value)
         boolean              equals(Object object)
         V                    get(Object key)
         int                  hashCode()
         boolean              isEmpty()
         Set<K>               keySet()
         V                    put(K key, V value)
         void                 putAll(Map<? extends K, ? extends V> map)
         V                    remove(Object key)
         int                  size()
         String               toString()
         Collection<V>        values()
         Object               clone()


4 SortedMap
SortedMap的定義如下:
復制代碼 代碼如下:

public interface SortedMap<K,V> extends Map<K,V> { }

SortedMap是一個繼承于Map接口的接口。它是一個有序的SortedMap鍵值映射。
SortedMap的排序方式有兩種:自然排序 或者 用戶指定比較器。 插入有序 SortedMap 的所有元素都必須實現 Comparable 接口(或者被指定的比較器所接受)。
另外,所有SortedMap 實現類都應該提供 4 個“標準”構造方法:
(01) void(無參數)構造方法,它創建一個空的有序映射,按照鍵的自然順序進行排序。
(02) 帶有一個 Comparator 類型參數的構造方法,它創建一個空的有序映射,根據指定的比較器進行排序。
(03) 帶有一個 Map 類型參數的構造方法,它創建一個新的有序映射,其鍵-值映射關系與參數相同,按照鍵的自然順序進行排序。
(04) 帶有一個 SortedMap 類型參數的構造方法,它創建一個新的有序映射,其鍵-值映射關系和排序方法與輸入的有序映射相同。無法保證強制實施此建議,因為接口不能包含構造方法。

SortedMap的API
復制代碼 代碼如下:

// 繼承于Map的API
abstract void                 clear()
abstract boolean              containsKey(Object key)
abstract boolean              containsValue(Object value)
abstract Set<Entry<K, V>>     entrySet()
abstract boolean              equals(Object object)
abstract V                    get(Object key)
abstract int                  hashCode()
abstract boolean              isEmpty()
abstract Set<K>               keySet()
abstract V                    put(K key, V value)
abstract void                 putAll(Map<? extends K, ? extends V> map)
abstract V                    remove(Object key)
abstract int                  size()
abstract Collection<V>        values()
// SortedMap新增的API
abstract Comparator<? super K>     comparator()
abstract K                         firstKey()
abstract SortedMap<K, V>           headMap(K endKey)
abstract K                         lastKey()
abstract SortedMap<K, V>           subMap(K startKey, K endKey)
abstract SortedMap<K, V>           tailMap(K startKey)


5 NavigableMap
NavigableMap的定義如下:
public interface NavigableMap<K,V> extends SortedMap<K,V> { }
NavigableMap是繼承于SortedMap的接口。它是一個可導航的鍵-值對集合,具有了為給定搜索目標報告最接近匹配項的導航方法。
NavigableMap分別提供了獲取“鍵”、“鍵-值對”、“鍵集”、“鍵-值對集”的相關方法。
NavigableMap的API
復制代碼 代碼如下:

abstract Entry<K, V>             ceilingEntry(K key)
abstract Entry<K, V>             firstEntry()
abstract Entry<K, V>             floorEntry(K key)
abstract Entry<K, V>             higherEntry(K key)
abstract Entry<K, V>             lastEntry()
abstract Entry<K, V>             lowerEntry(K key)
abstract Entry<K, V>             pollFirstEntry()
abstract Entry<K, V>             pollLastEntry()
abstract K                       ceilingKey(K key)
abstract K                       floorKey(K key)
abstract K                       higherKey(K key)
abstract K                       lowerKey(K key)
abstract NavigableSet<K>         descendingKeySet()
abstract NavigableSet<K>         navigableKeySet()
abstract NavigableMap<K, V>      descendingMap()
abstract NavigableMap<K, V>      headMap(K toKey, boolean inclusive)
abstract SortedMap<K, V>         headMap(K toKey)
abstract SortedMap<K, V>         subMap(K fromKey, K toKey)
abstract NavigableMap<K, V>      subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
abstract SortedMap<K, V>         tailMap(K fromKey)
abstract NavigableMap<K, V>      tailMap(K fromKey, boolean inclusive)

說明:
NavigableMap除了繼承SortedMap的特性外,它的提供的功能可以分為4類:
第1類,提供操作鍵-值對的方法。
               lowerEntry、floorEntry、ceilingEntry 和 higherEntry 方法,它們分別返回與小于、小于等于、大于等于、大于給定鍵的鍵關聯的 Map.Entry 對象。
               firstEntry、pollFirstEntry、lastEntry 和 pollLastEntry 方法,它們返回和/或移除最小和最大的映射關系(如果存在),否則返回 null。
第2類,提供操作鍵的方法。這個和第1類比較類似
               lowerKey、floorKey、ceilingKey 和 higherKey 方法,它們分別返回與小于、小于等于、大于等于、大于給定鍵的鍵。
第3類,獲取鍵集。
              navigableKeySet、descendingKeySet分別獲取正序/反序的鍵集。
第4類,獲取鍵-值對的子集。

6 Dictionary
Dictionary的定義如下:

復制代碼 代碼如下:

public abstract class Dictionary<K,V> {}

NavigableMap是JDK 1.0定義的鍵值對的接口,它也包括了操作鍵值對的基本函數。
Dictionary的API
復制代碼 代碼如下:

abstract Enumeration<V>     elements()
abstract V                  get(Object key)
abstract boolean            isEmpty()
abstract Enumeration<K>     keys()
abstract V                  put(K key, V value)
abstract V                  remove(Object key)
abstract int 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久天天躁狠狠躁夜夜躁| 91国偷自产一区二区三区的观看方式| 亚洲人成在线观看网站高清| 久久久久久久久国产精品| 国产精品成人国产乱一区| 91精品中国老女人| 中文字幕亚洲专区| 91最新在线免费观看| 亚洲美女av电影| 高清日韩电视剧大全免费播放在线观看| 欧美夜福利tv在线| 国产综合福利在线| 欧美日韩一区二区三区在线免费观看| 日韩高清av在线| 亚洲品质视频自拍网| 亚洲精品黄网在线观看| 91av免费观看91av精品在线| 欧美色道久久88综合亚洲精品| 青青草国产精品一区二区| 狠狠色狠狠色综合日日五| 国产一区二区三区丝袜| 久久精品精品电影网| 日韩成人高清在线| 亚洲欧美国产va在线影院| 欧美成人亚洲成人日韩成人| 亚洲а∨天堂久久精品喷水| 成人免费直播live| 欧美与欧洲交xxxx免费观看| 国产精品吴梦梦| 91精品在线看| 久久精彩免费视频| 欧美成人小视频| 国产噜噜噜噜噜久久久久久久久| 国产精品毛片a∨一区二区三区|国| 欧美成人亚洲成人| 国产欧美日韩视频| 国产日韩欧美在线| 国产精品女主播视频| 国产日韩换脸av一区在线观看| 91免费视频国产| 日韩av电影在线播放| 麻豆成人在线看| 在线日韩欧美视频| 一区国产精品视频| 久久精品视频在线| 国产不卡一区二区在线播放| 久久九九热免费视频| 久久久久久国产精品美女| 久久精品国产视频| 欧美日韩亚洲精品内裤| 亚洲欧洲成视频免费观看| 亚洲人成自拍网站| 久久成人综合视频| 亚洲一区二区三区xxx视频| 精品无人区乱码1区2区3区在线| 日韩电影中文 亚洲精品乱码| www.美女亚洲精品| 亚洲成人激情小说| 日韩电影中文 亚洲精品乱码| 亚洲最大的网站| 黑人精品xxx一区| 亚洲国产高清福利视频| 精品视频久久久久久| 色婷婷综合成人| 欧美又大粗又爽又黄大片视频| 91在线精品播放| 在线观看中文字幕亚洲| 热久久这里只有精品| 91探花福利精品国产自产在线| 伊人久久大香线蕉av一区二区| 亚洲а∨天堂久久精品喷水| 欧美激情综合亚洲一二区| 亚洲a区在线视频| 久热国产精品视频| 国产精品久久久久久久久借妻| 成人黄色午夜影院| 国产精品视频久久久| 九九视频直播综合网| 国产精品免费电影| 久久久久久高潮国产精品视| 亚洲欧美在线一区| 欧美国产视频日韩| 91免费在线视频| 免费av一区二区| 不卡毛片在线看| 亚洲成人在线网| 国产经典一区二区| 在线播放亚洲激情| 日本三级久久久| 91在线免费视频| 亚洲伊人第一页| 91久久国产婷婷一区二区| 激情av一区二区| 中文字幕日韩在线视频| 一区二区三欧美| 欧美成人久久久| 韩国视频理论视频久久| 4388成人网| 国产黑人绿帽在线第一区| 51久久精品夜色国产麻豆| 欧洲日本亚洲国产区| 91久久国产精品| 亚洲精品视频在线观看视频| 日韩欧美在线视频免费观看| 亚洲老板91色精品久久| 免费91在线视频| 中文字幕亚洲综合久久筱田步美| 亚洲欧美制服第一页| 成人做爰www免费看视频网站| 国产一区玩具在线观看| 在线观看日韩www视频免费| 97国产成人精品视频| 色无极影院亚洲| 亚洲毛茸茸少妇高潮呻吟| 欧美日本国产在线| 亚洲97在线观看| 久久深夜福利免费观看| 亚洲高清一区二| 亚洲欧美制服综合另类| 国产精品流白浆视频| 久久久久久久国产精品视频| 国产精彩精品视频| 中文字幕在线视频日韩| 日韩少妇与小伙激情| 国产区亚洲区欧美区| 91精品视频在线播放| 91精品国产高清久久久久久久久| 国产精品人成电影在线观看| 97在线视频观看| 成人免费自拍视频| 中文字幕亚洲一区二区三区五十路| 国产精品露脸av在线| 亚洲影院色无极综合| 久久久久久久久久久免费| 中文字幕日韩精品在线观看| 国产精品2018| 亚洲第一色在线| 欧美丝袜美女中出在线| 国产日韩中文字幕| 国产丝袜一区二区三区免费视频| 久久伊人精品天天| 欧美亚洲另类激情另类| 国产91精品久久久| 9.1国产丝袜在线观看| 中文字幕精品—区二区| 亚洲成人久久久| 亚洲成成品网站| 久久天天躁狠狠躁夜夜躁| 国产乱肥老妇国产一区二| xvideos亚洲| 久久精品中文字幕电影| 91网站免费看| 福利一区视频在线观看| 欧美激情视频播放| 亚洲欧美国产一区二区三区| 欧洲美女7788成人免费视频| 热久久这里只有| 亚洲视频精品在线| 上原亚衣av一区二区三区| 久久免费视频在线观看| 欧美性色视频在线| 精品国产自在精品国产浪潮| 68精品国产免费久久久久久婷婷| 久久国产精品偷|