java.util
类 AbstractMap<K,V>

java.lang.Object
  继承者 java.util.AbstractMap<K,V>
类型参数:
K - 此映射维护的键的类型
V - 映射值的类型
所有已实现的接口:
Map<K,V>
直接已知子类:
ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, IdentityHashMap, TreeMap, WeakHashMap

public abstract class AbstractMap<K,V>
   
   
   
extends Object
implements Map<K,V>

此类提供 Map 接口的骨干实现,以最大限度地减少实现此接口所需的工作。

要实现不可修改的映射,编程人员只需扩展此类并提供 entrySet 方法的实现即可,该方法将返回映射的映射关系 set 视图。通常,返回的 set 将依次在 AbstractSet 上实现。此 set 不支持 addremove 方法,其迭代器也不支持 remove 方法。

要实现可修改的映射,编程人员必须另外重写此类的 put 方法(否则将抛出 UnsupportedOperationException),entrySet().iterator() 返回的迭代器也必须另外实现其 remove 方法。

按照 Map 接口规范中的建议,编程人员通常应该提供一个 void(无参数)构造方法和 map 构造方法。

此类中每个非抽象方法的文档详细描述了其实现。如果要实现的映射允许更有效的实现,则可以重写所有这些方法。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.2
另请参见:
Map, Collection

嵌套类摘要
static classAbstractMap.SimpleEntry<K,V>
          维护键和值的 Entry。
static classAbstractMap.SimpleImmutableEntry<K,V>
          维护不可变的键和值的 Entry。
 
从接口 java.util.Map 继承的嵌套类/接口
Map.Entry<K,V>
 
构造方法摘要
protected AbstractMap()
          唯一的构造方法。
 
方法摘要
 voidclear()
          从此映射中移除所有映射关系(可选操作)。
protected  Objectclone()
          返回此 AbstractMap 实例的浅表副本:不复制键和值本身。
 booleancontainsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true
 booleancontainsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true
abstract  Set<Map.Entry<K,V>>entrySet()
          返回此映射中包含的映射关系的 Set 视图。
 booleanequals(Object o)
          比较指定对象与此映射的相等性。
 Vget(Object key)
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
 inthashCode()
          返回此映射的哈希码值。
 booleanisEmpty()
          如果此映射未包含键-值映射关系,则返回 true
 Set<K>keySet()
          返回此映射中包含的键的 Set 视图。
 Vput(K key, V value)
          将指定的值与此映射中的指定键关联(可选操作)。
 voidputAll(Map<? extends K,? extends V> m)
          从指定映射中将所有映射关系复制到此映射中(可选操作)。
 Vremove(Object key)
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
 intsize()
          返回此映射中的键-值映射关系数。
 StringtoString()
          返回此映射的字符串表示形式。
 Collection<V>values()
          返回此映射中包含的值的 Collection 视图。
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

AbstractMap

protected AbstractMap()
唯一的构造方法。(由子类构造方法调用,通常是隐式的。)

方法详细信息

size

public int size()
返回此映射中的键-值映射关系数。如果该映射包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE

此实现返回 entrySet().size()

指定者:
接口 Map<K,V> 中的 size
返回:
此映射中的键-值映射关系数

isEmpty

public boolean isEmpty()
如果此映射未包含键-值映射关系,则返回 true

此实现返回 size() == 0

指定者:
接口 Map<K,V> 中的 isEmpty
返回:
如果此映射未包含键-值映射关系,则返回 true

containsValue

public boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。更确切地讲,当且仅当此映射至少包含一个对满足 (value==null ? v==null : value.equals(v)) 的值 v 的映射关系时,返回 true。对于大多数 Map 接口的实现而言,此操作需要的时间可能与映射大小呈线性关系。

此实现在 entrySet() 上进行迭代,以搜索带有指定值的条目。如果找到这样的条目,则返回 true。如果迭代终止,并且没有找到这样的条目,则返回 false。注意,此实现所需的时间与映射的大小呈线性关系。

指定者:
接口 Map<K,V> 中的 containsValue
参数:
value - 测试是否存在于此映射中的值
返回:
如果此映射将一个或多个键映射到指定值,则返回 true
抛出:
ClassCastException - 如果该值对于此映射是不合适的类型(可选)
NullPointerException - 如果指定值为 null 并且此映射不允许 null 值(可选)

containsKey

public boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。更确切地讲,当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时,返回 true。(最多只能有一个这样的映射关系)。

此实现在 entrySet() 上进行迭代,以搜索带有指定键的条目。如果找到这样的条目,则返回 true。如果迭代终止,并且没有找到这样的条目,则返回 false。注意,此实现所需的时间与映射的大小呈线性关系;许多实现将重写此方法。

指定者:
接口 Map<K,V> 中的 containsKey
参数:
key - 测试是否存在于此映射中的键
返回:
如果此映射包含指定键的映射关系,则返回 true
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)

get

public V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null

更确切地讲,如果此映射包含满足 (key==null ? k==null : key.equals(k)) 的键 k 到值 v 的映射关系,则此方法返回 v;否则返回 null。(最多只能有一个这样的映射关系)。

如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。使用 containsKey 操作可区分这两种情况。

此实现在 entrySet() 上进行迭代,以搜索带有指定键的条目。如果找到这样的条目,则返回该条目的值。如果迭代终止,并且没有找到这样的条目,则返回 null。注意,此实现所需的时间与映射的大小呈线性关系;许多实现将重写此方法。

指定者:
接口 Map<K,V> 中的 get
参数:
key - 要返回其关联值的键
返回:
指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
抛出:
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)

put

public V put(K key,
             V value)
将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m 包含键 k 的映射关系)。

此实现始终抛出 UnsupportedOperationException

指定者:
接口 Map<K,V> 中的 put
参数:
key - 与指定值关联的键
value - 与指定键关联的值
返回:
以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。(如果该实现支持 null 值,则返回 null 也可能表示此映射以前将 nullkey 关联)。
抛出:
UnsupportedOperationException - 如果此映射不支持 put 操作
ClassCastException - 如果指定键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定键或值为 null,并且此映射不允许 null 键或值
IllegalArgumentException - 如果指定键或值的某些属性不允许将其存储在此映射中