容器--Map概述

之前講過了Collection類下的兩個主要容器:List和Set,今天我們來講講沒有繼承自Collection的容器:Map。

Map提供了一個更通用的元素存儲方法,Map提供了一個鍵值對的存儲方式,一個鍵映射到一個值。、

Map中的常用方法

返回類型 方法名(參數類型)
void clear()

從該地圖中刪除所有的映射(可選操作)。

boolean containsKey(Object key)

如果此映射包含指定鍵的映射,則返回 true 。

Set<Map.Entry<K,V>> entrySet()

返回此地圖中包含的映射的Set視圖。

boolean equals(Object o)

將指定的對象與此映射進行比較以獲得相等性

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()

返回此地圖中鍵值映射的數量。

default V replace(K key, V value)

只有當目標映射到某個值時,才能替換指定鍵的條目。

default boolean replace(K key, V oldValue, V newValue)

僅噹噹前映射到指定的值時,才能替換指定鍵的條目。

Map中的常用類

我們來看看Map的結構圖

可以看出主要有三個實現類

  1. HashMap
  2. TreeMap
  3. WeakHashMap
  4. HashTable

HashMap

HashMap是最常用的Map,根據鍵的Hash值來存儲數據,具有很快的訪問速度。HashMap允許key、value爲null,HashMap是非同步的。

TreeMap

TreeMap的特點就是其值是有序的,默認按升序排序,也可以指定比較器。TreeMap不允許key爲null。TreeMap是非同步的。

WeakHashMap

WeakHashMap與HashMap基本一樣,區別在於其鍵的引用類型。WeakHashMap的鍵是弱引用(WeakReference)類型,採用弱引用類型的好處是方便GC(垃圾回收器)進行垃圾回收,即方便內存的釋放。

HashTable

與HashMap類似,但是HashTable不允許key和value的值爲null,HashTable是線程同步的。

ConcurrentHashMap

在這裏要特別提一下ConcurrentHashMap。HashMap是非同步的,雖然HashTable能解決HashMap的非同步問題,但是HashTable採用的是使用synchronized關鍵字進行線程同步,這樣做的效率很低。ConcurrentHashMap就是爲了解決線程同步但效率不高的問題。ConcurrentHashMap採用了分段鎖的機制,後續我們會對這個分段鎖詳細介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章