所有类


java.util
类 AbstractMap<K,V>

java.lang.Object
  继承者 java.util.AbstractMap<K,V>
所有已实现的接口:
Map<K,V>
直接已知子类:
ConcurrentHashMap, 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

嵌套类摘要
 
从接口 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)
          返回此映射将指定键映射到的值。
 inthashCode()
          返回此映射的哈希码值。
 booleanisEmpty()
          如果此映射不包含任何键-值映射关系,则返回 true
 Set<K>keySet()
          返回包含在此映射中的键的 Set 视图。
 Vput(K key, V value)
          将指定的值与此映射中的指定键关联起来(可选操作)。
 voidputAll(Map<? extends K,? extends V> t)
          将指定映射的所有映射关系复制到此映射中(可选操作)。
 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。更正式地说,当且仅当此映射包含至少一个到值 v 的映射关系,并且 (value==null ? v==null : value.equals(v)) 时才返回 true。对于大多数映射实现而言,此操作所需的时间可能与映射的大小呈线性关系。

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

指定者:
接口 Map<K,V> 中的 containsValue
参数:
value - 将测试此映射中是否存在的值。
返回:
如果此映射将一个或多个键映射到该值,则返回 true

containsKey

public boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true

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

指定者:
接口 Map<K,V> 中的 containsKey
参数:
key - 将测试此映射中是否存在的键。
返回:
如果此映射包含指定键的映射关系,则返回 true
抛出:
NullPointerException - 如果该键为 null 并且此映射不允许包含 null 键。

get

public V get(Object key)
返回此映射将指定键映射到的值。如果该映射不包含此键的映射关系,则返回 null。返回值 null一定 表明该映射不包含该键的映射关系;也可能是该映射显式地将该键映射到 null。可以使用 containsKey 操作来区分这两种情况。

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

指定者:
接口 Map<K,V> 中的 get
参数:
key - 与返回值关联的键。
返回:
此映射将指定键映射到的值。
抛出:
NullPointerException - 如果键为 null 并且此映射不允许包含 null 键。
另请参见:
containsKey(Object)

put

public V put(K key,
             V value)
将指定的值与此映射中的指定键关联起来(可选操作)。如果映射以前包含此键的映射关系,则替换旧的值。

此实现始终抛出 UnsupportedOperationException

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

remove

public V remove(Object key)
如果此映射中存在此键的映射关系,则移除该映射关系(可选操作)。

此实现在 entrySet() 上进行迭代,以搜索带有指定键的项。如果找到这样的项,则通过 getValue 操作获得该项的值,然后使用迭代器的 remove 操作从 Collection(以及底层映射)中移除该项,并返回保存的值。如果迭代终止,并且没有找到这样的项,则返回 null。注意,此实现所需要时间与映射大小呈线性关系;许多实现将重写此方法。

注意,如果 entrySet 迭代器不支持 remove 方法并且此映射包含指定键的映射关系,则此实现会抛出 UnsupportedOperationException

指定者:
接口 Map<K,V> 中的 remove
参数:
key - 将从映射中移除其映射关系的键。
返回:
指定键以前的关联值。如果没有该键的项,则返回 null。(如果该实现支持 null 值,则返回 null 也可以表明该映射以前将 null 与指定键相关联。)
抛出:
UnsupportedOperationException - 如果此映射不支持 remove 操作。