Most visited

Recently visited

Added in API level 1

AbstractMap

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

java.lang.Object
   ↳ java.util.AbstractMap<K, V>
Known Direct Subclasses
Known Indirect Subclasses


该类提供了 Map接口的骨架实现,以尽量减少实现此接口所需的工作量。

为了实现一个不可修改的地图,程序员只需要扩展这个类并为entrySet方法提供一个实现,该方法返回地图映射的set-view。 通常,返回的集合将依次在AbstractSet之上实现 该集不应该支持addremove方法,其迭代器不应该支持remove方法。

为了实现可修改的映射,程序员必须另外重写此类的 put方法(否则将引发 UnsupportedOperationException ),并且由 entrySet().iterator()返回的迭代器必须另外实现其 remove方法。

根据 Map接口规范中的建议,程序员通常应该提供一个void(无参数)和map构造函数。

这个类中每个非抽象方法的文档都详细描述了它的实现。 如果正在实施的地图允许更有效的实施,则可以重写这些方法中的每一个。

本课是 Java Collections Framework的成员。

也可以看看:

Summary

Nested classes

class AbstractMap.SimpleEntry<K, V>

一个维护一个键和一个值的条目。

class AbstractMap.SimpleImmutableEntry<K, V>

一个条目维护一个不可变的键和值。

Protected constructors

AbstractMap()

唯一的构造函数。

Public methods

void clear()

从该映射中删除所有映射(可选操作)。

这个实现调用 entrySet().clear()

boolean containsKey(Object key)

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

该实现迭代 entrySet()以指定的键搜索条目。

boolean containsValue(Object value)

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

该实现迭代 entrySet()以搜索具有指定值的条目。

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

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

boolean equals(Object o)

将指定的对象与此映射进行比较以获得相等性。

V get(Object key)

返回指定键映射到的值,或者如果此映射不包含键映射,则返回 null

此实现迭代 entrySet()以指定键搜索条目。

int hashCode()

返回此映射的哈希码值。

boolean isEmpty()

如果此映射不包含键 - 值映射,则返回 true

该实现返回 size() == 0

Set<K> keySet()

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

该实现返回一个子类为 AbstractSet

V put(K key, V value)

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

这个实现总是抛出一个 UnsupportedOperationException

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

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

该实现迭代指定地图的 entrySet()集合,并为迭代返回的每个条目调用此映射的 put操作一次。

V remove(Object key)

如果该映射存在,则从该映射中除去该映射(可选操作)。

该实现迭代 entrySet()以指定的键搜索条目。

int size()

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

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

String toString()

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

Collection<V> values()

返回此映射中包含的值的 Collection视图。

此实现返回一个集合,该集合的子类为 AbstractCollection

Protected methods

Object clone()

返回此 AbstractMap实例的浅表副本:键和值本身未被克隆。

Inherited methods

From class java.lang.Object
From interface java.util.Map

Protected constructors

AbstractMap

Added in API level 1
AbstractMap ()

唯一的构造函数。 (对于子类构造函数的调用,通常是隐式的。)

Public methods

clear

Added in API level 1
void clear ()

从该映射中删除所有映射(可选操作)。 此通话返回后,地图将为空。

这个实现调用 entrySet().clear()

注意,此实现抛出 UnsupportedOperationException如果 entrySet不支持 clear操作。

Throws
UnsupportedOperationException

containsKey

Added in API level 1
boolean containsKey (Object key)

如果此映射包含指定键的映射,则返回true 更正式地,返回true当且仅当该映射包含密钥k的映射,例如Objects.equals(key, k) (最多可以有一个这样的映射。)

该实现迭代entrySet()以指定的键搜索条目。 如果找到这样的条目,则返回true 如果迭代终止而没有找到这样的条目,则返回false 请注意,此实现需要地图大小的线性时间; 许多实现将覆盖此方法。

Parameters
key Object: key whose presence in this map is to be tested
Returns
boolean true if this map contains a mapping for the specified key
Throws
ClassCastException
NullPointerException

containsValue

Added in API level 1
boolean containsValue (Object value)

如果此映射将一个或多个键映射到指定值,则返回true 更正式地,返回true当且仅当该映射包含至少一个映射到值v以至于Objects.equals(value, v) 对于Map接口的大多数实现,此操作可能需要时间线性地图大小。

这个实现迭代entrySet()搜索具有指定值的条目。 如果找到这样的条目,则返回true 如果迭代终止而没有找到这样的条目,则返回false 请注意,此实现需要地图大小的线性时间。

Parameters
value Object: value whose presence in this map is to be tested
Returns
boolean true if this map maps one or more keys to the specified value
Throws
ClassCastException
NullPointerException

entrySet

Added in API level 1
Set<Entry<K, V>> entrySet ()

返回此映射中包含的映射的Set视图。 该集合由地图支持,因此对地图的更改反映在集合中,反之亦然。 如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作或对迭代器返回的映射条目执行setValue操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAllclear操作。 它不支持addaddAll操作。

Returns
Set<Entry<K, V>> a set view of the mappings contained in this map

equals

Added in API level 1
boolean equals (Object o)

将指定的对象与此映射进行比较以获得相等性。 如果给定的对象也是一个映射,并且这两个映射表示相同的映射,则返回true 更正式地说,如果是m1.entrySet().equals(m2.entrySet()) ,则两张地图m1m2表示相同的映射。 这确保equals方法在Map接口的不同实现中正常工作。

这个实现首先检查指定的对象是否是这个映射; 如果是的话,则返回true 然后,它检查指定的对象是否是大小与此地图大小相同的地图; 如果不是,则返回false 如果是这样,它会迭代该地图的entrySet集合,并检查指定的地图是否包含此地图包含的每个映射。 如果指定的映射未包含此映射,则返回false 如果迭代完成,则返回true

Parameters
o Object: object to be compared for equality with this map
Returns
boolean true if the specified object is equal to this map

get

Added in API level 1
V get (Object key)

返回指定键映射到的值,或者如果此映射不包含键映射,则返回 null

更正式地说,如果该映射包含从键k到值v的映射,例如Objects.equals(key, k) ,则该方法返回v ; 否则返回null (最多可以有一个这样的映射。)

如果此映射允许空值,则返回值null 不一定表示映射不包含该键的映射; 地图也可能明确将密钥映射到null containsKey操作可用于区分这两种情况。

此实现迭代entrySet()以指定的键搜索条目。 如果找到这样的条目,则返回条目的值。 如果迭代终止而没有找到这样的条目,则返回null 请注意,此实现需要地图大小的线性时间; 许多实现将覆盖此方法。

Parameters
key Object: the key whose associated value is to be returned
Returns
V the value to which the specified key is mapped, or null if this map contains no mapping for the key
Throws
ClassCastException
NullPointerException

hashCode

Added in API level 1
int hashCode ()

返回此映射的哈希码值。 地图的哈希码被定义为地图entrySet()视图中每个条目的哈希码的总和。 这确保了m1.equals(m2)意味着m1.hashCode()==m2.hashCode()对于任何两个地图m1m2,所要求的一般合同hashCode()

该实现迭代 entrySet() ,在集合中的每个元素(条目)上调用 hashCode() ,并将结果相加。

Returns
int the hash code value for this map

也可以看看:

isEmpty

Added in API level 1
boolean isEmpty ()

如果此映射不包含键 - 值映射,则返回 true

该实现返回 size() == 0

Returns
boolean true if this map contains no key-value mappings

keySet

Added in API level 1
Set<K> keySet ()

返回包含在此映射中的键的Set视图。 该集合由地图支持,因此对地图的更改反映在集合中,反之亦然。 如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAll ,和clear操作。 它不支持addaddAll操作。

该实现返回一个子类为AbstractSet 子类的iterator方法返回一个“包装物”在这个地图的entrySet()迭代器。 size方法委托给此地图的size方法,而contains方法委托给此地图的containsKey方法。

第一次调用此方法时创建该集合,并响应所有后续调用返回该集合。 没有执行同步,因此多次调用此方法的机会不会全部返回相同的集合。

Returns
Set<K> a set view of the keys contained in this map

put

Added in API level 1
V put (K key, 
                V value)

将指定的值与此映射中指定的键关联(可选操作)。 如果映射先前包含该键的映射,则旧值由指定值替换。 (当且仅当m.containsKey(k)将返回true地图m被认为包含密钥k的映射。)

这个实现总是抛出一个 UnsupportedOperationException

Parameters
key K: key with which the specified value is to be associated
value V: value to be associated with the specified key
Returns
V the previous value associated with key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with key, if the implementation supports null values.)
Throws
UnsupportedOperationException
ClassCastException
NullPointerException
IllegalArgumentException

putAll

Added in API level 1
void putAll (Map<? extends K, ? extends V> m)

将指定映射中的所有映射复制到此映射(可选操作)。 此调用的效果等同于在此映射上针对指定映射中的密钥k到值v每次映射调用put(k, v)的效果。 如果在操作过程中修改了指定的映射,则此操作的行为未定义。

该实现迭代指定地图的 entrySet()集合,并为迭代返回的每个条目调用一次该映射的 put操作。

请注意,如果此映射不支持 put操作并且指定的映射非空,则此实现将引发 UnsupportedOperationException

Parameters
m Map: mappings to be stored in this map
Throws
UnsupportedOperationException
ClassCastException
NullPointerException
IllegalArgumentException

remove

Added in API level 1
V remove (Object key)

如果该映射存在,则从该映射中除去该映射(可选操作)。 更正式地说,如果该映射包含从键k到值v映射(例如Objects.equals(key, k) ),则映射被移除。 (地图最多可以包含一个这样的映射。)

返回此映射先前与键关联的值,或者如果映射不包含键映射,则返回 null

如果此映射允许空值,则返回值null 不一定表示该映射不包含该键的映射; 地图也可能明确将密钥映射到null

一旦调用返回,映射将不包含指定键的映射。

此实现迭代entrySet()以指定键搜索条目。 如果找到这样的条目,则通过操作getValue获取其值,使用迭代器的remove操作将该条目从集合(和支持映射)中移除 ,并返回保存的值。 如果迭代终止而没有找到这样的条目,则返回null 请注意,此实现需要地图大小的线性时间; 许多实现将覆盖此方法。

请注意,如果 entrySet迭代器不支持 remove方法并且此映射包含指定键的映射,则此实现将引发 UnsupportedOperationException

Parameters
key Object: key whose mapping is to be removed from the map
Returns
V the previous value associated with key, or null if there was no mapping for key.
Throws
UnsupportedOperationException
ClassCastException
NullPointerException

size

Added in API level 1
int size ()

返回此映射中键 - 值映射的数量。 如果地图包含超过Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE

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

Returns
int the number of key-value mappings in this map

toString

Added in API level 1
String toString ()

返回此映射的字符串表示形式。 所述字符串表示包括通过地图的entrySet视图的迭代器返回的顺序键-值映射,括在括号("{}")的列表的。 相邻映射由字符", " (逗号和空格)分隔。 每个键值映射都呈现为键后跟一个等号( "=" ),后跟相关联的值。 键和值被转换为字符串,如valueOf(Object)

Returns
String a string representation of this map

values

Added in API level 1
Collection<V> values ()

返回此映射中包含的值的Collection视图。 该集合由地图支持,因此地图的更改会反映在集合中,反之亦然。 如果在迭代集合的过程中修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。 该collection支持元素移除,即从映射中相应的映射,经由Iterator.removeCollection.removeremoveAllretainAllclear操作。 它不支持addaddAll操作。

该实现返回一个集合,该集合的子类为AbstractCollection 子类的iterator方法返回一个“包装物”在这个地图的entrySet()迭代器。 size方法委托给此地图的size方法,而contains方法委托给此地图的containsValue方法。

第一次调用此方法时创建集合,并响应所有后续调用返回。 没有执行同步,因此多次调用此方法的机会不会全部返回相同的集合。

Returns
Collection<V> a collection view of the values contained in this map

Protected methods

clone

Added in API level 1
Object clone ()

返回此 AbstractMap实例的浅表副本:键和值本身未被克隆。

Returns
Object a shallow copy of this map
Throws
CloneNotSupportedException

Hooray!