您的位置:首页 > 其它

AbstractMap

2016-03-28 12:46 281 查看


AbstractMap

 编辑
本词条缺少信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

java.util 类 AbstractMap java.lang.Object java.util.AbstractMap此类提供了 Map 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。


目录

简介

版本信息

构造方法详细信息


简介

编辑

所有已实现的接口:

Map<K,V>

直接已知子类:

ConcurrentHashMap, EnumMap, HashMap, IdentityHashMap, TreeMap, WeakHashMap

--------------------------------------------------------------------------------

public abstract class AbstractMap<K,V>extends Objectimplements Map<K,V>要实现不可修改的映射,程序员只需扩展此类并提供 entrySet 方法的实现即可,该方法将返回映射的映射关系 Set 视图。通常,返回的 Set 将依次在 AbstractSet 上实现。此
Set 不支持 add 或 remove 方法,其迭代器也不支持 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()

单独的构造方法

方法摘要

void clear()

从此映射中移除所有映射关系(可选操作)。

protected Object clone()

返回此 AbstractMap 实例的浅表复制:不克隆键和值本身。

boolean containsKey(Object key)

如果此映射包含指定键的映射关系,则返回 true。

boolean containsValue(Object value)

如果此映射将一个或多个键映射到该值,则返回 true。

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

返回包含在此映射中的映射关系的 Set 视图。

boolean equals(Object o)

比较指定对象与此映射的相等性。

V get(Object key)

返回此映射将指定键映射到的值。

int hashCode()

返回此映射的哈希代码值。

boolean isEmpty()

如果此映射不包含任何键-值映射关系,则返回 true。

Set<K> keySet()

返回包含在此映射中的键的 Set 视图。

V put(K key, V value)

将指定的值与此映射中的指定键关联起来(可选操作)。

void putAll(Map<? extends K,? extends V> t)

将指定映射的所有映射关系复制到此映射中(可选操作)。

V remove(Object key)

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

int size()

返回此映射中键-值映射关系的数量。

String toString()

返回此映射的字符串表示形式。

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 操作。

--------------------------------------------------------------------------------

putAll

public void putAll(Map<? extends K,? extends V> t)将指定映射的所有映射关系复制到此映射中(可选操作)。这些映射关系将替代此映射中已有的,并且指定映射中目前也存在的所有键的映射关系。

此实现在指定映射的 entrySet() 集合上进行迭代,并对迭代返回的每一项调用一次此映射的 put 操作。

注意,如果此映射不支持 put 操作,并且指定映射为非空,则此实现会抛出 UnsupportedOperationException。

指定者:

接口 Map<K,V> 中的 putAll

参数:

t - 要存储在此映射中的映射关系。

抛出:

UnsupportedOperationException - 如果此映射不支持 putAll 操作。

ClassCastException - 如果指定映射中的键或值的类不允许它存储在此映射中。

IllegalArgumentException - 如果指定映射中的键或值的某方面不允许它存储在此映射中。

NullPointerException - 如果指定的映射为 null,或者如果此映射不允许 null 键或值,但指定的映射包含了 null 键或值。

--------------------------------------------------------------------------------

clear

public void clear()从此映射中移除所有映射关系(可选操作)。

此实现调用 entrySet().clear()。 注意,如果 entrySet 不支持 clear 操作,则此实现会抛出 UnsupportedOperationException。

指定者:

接口 Map<K,V> 中的 clear

抛出:

UnsupportedOperationException - 此映射不支持 clear 操作。

--------------------------------------------------------------------------------

keySet

public Set<K> keySet()返回包含在此映射中的键的 Set 视图。该 Set 受映射的支持,所以对映射的更改反映在 Set 中,反之亦然。(如果在对 Set 进行迭代的同时修改映射,则迭代的结果是不明确的。)Set 支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的项。 它不支持 add 或 addAll 操作。

此实现返回一个为 AbstractSet 创建子类的 Set。子类的 iterator 方法通过此映射的 entrySet() 迭代器返回一个“包装器对象”。size
方法委托给此映射的 size 方法,而 contains 方法委托给此映射的 containsKey 方法。

Set 是在第一次调用此方法时创建的,并为响应所有后续调用而返回。 因为不执行同步操作,所以对此方法的多个调用很少返回不同的 Set。

指定者:

接口 Map<K,V> 中的 keySet

返回:

包含在此映射中的键的 Set 视图。

--------------------------------------------------------------------------------

values

public Collection<V> values()返回包含在此映射中的值的 collection 视图。该 collection 受映射的支持,所以对映射的更改反映在 collection 中,反之亦然。(如果在对 collection 进行迭代的同时修改映射,则迭代的结果是不明确的。)collection 支持元素移除,即通过 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的项。它不支持 add 或 addAll
操作。

此实现返回一个为抽象 collection 创建子类的 collection。子类的 iterator 方法通过此映射的 entrySet() 迭代器返回一个“包装器对象”。size 方法委托给此映射的 size 方法,而 contains 方法委托给此映射的 containsValue 方法。

collection 是在第一次调用此方法时创建的,并为响应所有后续调用而返回。因为不执行同步操作,所以对此方法的多个调用很少返回不同的 Collection。

指定者:

接口 Map<K,V> 中的 values

返回:

包含在此映射中的值的 collection 视图。

--------------------------------------------------------------------------------

entrySet

public abstract Set<Map.Entry<K,V>> entrySet()返回包含在此映射中的映射关系的 Set 视图。此 Set 的每一个元素都是一个 Map.Entry。该 Set 受映射的支持,所以对映射的更改反映在 Set 中,反之亦然。(如果在对 Set 进行迭代的同时修改映射,则迭代的结果是不明确的。)Set 支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的项。它不支持 add
或 addAll 操作。

指定者:

接口 Map<K,V> 中的 entrySet

返回:

包含在此映射中的映射关系的 Set 视图。

--------------------------------------------------------------------------------

equals

public boolean equals(Object o)比较指定对象与此映射的相等性。如果给定对象也是一个映射并且两个映射表示相同的映射关系,则返回 true。更正式地说,如果 t1.keySet().equals(t2.keySet()) 并且对于每一个 t1.keySet() 中的键 k 都存在 (t1.get(k)==null ? t2.get(k)==null :t1.get(k).equals(t2.get(k))),则两个映射 t1 和 t2 表示相同的映射关系 。这可以确保 equals
方法在 map 接口的不同实现中正常工作。

此实现首先检查指定的对象是否为此映射;如果是,则返回 true。然后,它将检查指定的对象是否是一个大小与此 set 的大小相等的映射;如果不是,则返回 false。如果是,则在此映射的 entrySet 集合上进行迭代,并检查指定的映射是否包含此映射所包含的每个映射关系。如果指定的映射中不包含这样的映射关系,则返回 false。如果迭代完成,则返回 true。

指定者:

接口 Map<K,V> 中的 equals

覆盖:

类 Object 中的 equals

参数:

o - 要与此映射进行相等性比较的对象。

返回:

如果指定的对象等于此映射,则返回 true。

另请参见:

Object.hashCode(), Hashtable

--------------------------------------------------------------------------------

hashCode

public int hashCode()返回此映射的哈希代码值。映射的哈希代码被定义为该映射的 entrySet() 视图中每一项的哈希代码的总和。这确保了 t1.equals(t2) 对于任意两个映射 t1 和 t2 都意味着 t1.hashCode()==t2.hashCode(),正如
Object.hashCode 的常规协定所要求的。

此实现在 entrySet() 上进行迭代,对 Collection 中的每个元素(项)调用 hashCode,并合计结果。

指定者:

接口 Map<K,V> 中的 hashCode

覆盖:

类 Object 中的 hashCode

返回:

此映射的哈希代码值。

另请参见:

Map.Entry.hashCode(), Object.hashCode(), Object.equals(Object), Set.equals(Object)

--------------------------------------------------------------------------------

toString

public String toString()返回此映射的字符串表示形式。该字符串表示形式由键-值映射关系的一个列表组成,此列表是按照映该射 entrySet 视图的迭代器返回的顺序排列的,并用括号 ("{}") 括起来。相邻的映射关系是用字符
", "(逗号加空格)分隔的。每个键-值映射关系按以下方式呈现:键,后面是一个等号 ("="),再后面是相关联的值。键和值都通过 String.valueOf(Object) 转换为字符串。

此实现会创建一个空的字符串缓冲区,追加一个左括号,然后在映射的 entrySet 视图上进行迭代,依次追加每个 map.entry 的字符串表示形式。每追加一项后(最后一项除外),将追加字符串 ", "。最后,追加一个右括号。从字符串缓冲区中获得一个字符串并返回它。

覆盖:

类 Object 中的 toString

返回:

此映射的字符串表示形式。

--------------------------------------------------------------------------------

clone

protected Object clone()

throws CloneNotSupportedException返回此 AbstractMap 实例的浅表复制:不克隆键和值本身。

覆盖:

类 Object 中的 clone

返回:

此映射的浅表复制。

抛出:

CloneNotSupportedException - 如果对象的类不支持 Cloneable 接口,则重写 clone 方法的子类也会抛出此异常,以指示无法克隆某个实例。

另请参见:

Cloneable

词条标签:
计算机学
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: