K - 由该地图维护的键的类型
V - 映射值的类型
public abstract class AbstractMap<K,V> extends Object implements Map<K,V>
为了实现一个不可修改的地图,程序员只需要扩展这个类并为entrySet方法提供一个实现,该方法返回地图映射的设置视图。 通常,返回的集合又将在AbstractSet顶部实现 。 这个集合不应该支持add或remove方法,而且它的迭代器不应该支持remove方法。
要实现可修改的映射,程序员必须另外覆盖此类的put方法(否则将抛出UnsupportedOperationException ),由entrySet().iterator()返回的迭代器必须另外实现其remove方法。
程序员通常应该提供一个空隙(无参数)和图构造器,按照在Map接口规范的建议。
该类中每个非抽象方法的文档详细描述了其实现。 如果实施的地图承认更有效的实施,则可以覆盖这些方法中的每一个。
这个班是Java Collections Framework的成员。
Map , Collection
| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractMap.SimpleEntry<K,V>
保存密钥和值的条目。
|
static class |
AbstractMap.SimpleImmutableEntry<K,V>
保持一个不变的钥匙和价值的条目。
|
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractMap()
唯一的构造函数。
|
| Modifier and Type | Method and Description |
|---|---|
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)
返回到指定键所映射的值,或
null如果此映射包含该键的映射。
|
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()
返回此地图中键值映射的数量。
|
String |
toString()
返回此地图的字符串表示形式。
|
Collection<V> |
values()
返回此地图中包含的值的 Collection视图。
|
finalize, getClass, notify, notifyAll, wait, wait, waitcompute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllpublic int size()
public boolean isEmpty()
public boolean containsValue(Object value)
containsValue在界面
Map<K,V>
value - 要在该地图中存在的值要进行测试
ClassCastException - 如果该值对于该地图是不合适的类型(
optional )
NullPointerException - 如果指定的值为空,并且该映射不允许空值(
optional )
public boolean containsKey(Object key)
containsKey在界面
Map<K,V>
key - 要在这个地图上存在的密钥要被测试
ClassCastException - 如果密钥对于此地图是不合适的类型(
optional )
NullPointerException - 如果指定的键为空,并且此映射不允许空键(
optional )
public V get(Object key)
null如果此映射包含该键的映射。
更正式地,如果这张地图包含一个从键k到值v ,使得(key==null ? k==null : key.equals(k)) ,那么这个方法返回v ; 否则返回null 。 (最多可以有一个这样的映射。)
如果此映射允许空值,则返回值null并不一定表明该映射不包含该键的映射关系; 地图也可能明确地将密钥映射到null 。 可以使用containsKey操作来区分这两种情况。
get在接口
Map<K,V>
key - 要返回其关联值的键
null
ClassCastException - 如果密钥是该地图不合适的类型(
optional )
NullPointerException - 如果指定的键为空,并且此映射不允许空键(
optional )
public V put(K key, V value)
put在接口
Map<K,V>
key - 指定值与之关联的键
value - 与指定键相关联的值
UnsupportedOperationException -如果
put操作不受此地图支持
ClassCastException - 如果指定的键或值的类阻止它存储在此映射中
NullPointerException - 如果指定的键或值为空,并且此映射不允许空值或值
IllegalArgumentException - 如果指定键或值的某些属性阻止其存储在此映射中
public V remove(Object key)
(key==null ? k==null : key.equals(k)) ,该映射被去除。
(地图最多可以包含一个这样的映射。)
返回此地图先前相关联的密钥,或null如果映射包含该键的映射值。
如果此映射允许空值,那么null返回值并不一定表明此映射不包含该键的映射关系; 地图也可能显式地将密钥映射到null 。
一旦呼叫返回,该映射将不包含指定键的映射。
remove在接口
Map<K,V>
注意,此实现抛出UnsupportedOperationException如果entrySet迭代器不支持remove方法,并且此映射包含指定键的映射关系。
key - 要从地图中删除其映射的密钥
UnsupportedOperationException -如果
remove操作不受此地图支持
ClassCastException - 如果密钥是该地图不合适的类型(
optional )
NullPointerException - 如果指定的键为空,并且此映射不允许空键(
optional )
public void putAll(Map<? extends K,? extends V> m)
put(k, v)的效果相当。
如果在操作进行中修改了指定的地图,则此操作的行为是未定义的。
putAll在界面
Map<K,V>
请注意,如果此映射不支持put操作,并且指定的映射是非空的,则此实现将抛出UnsupportedOperationException 。
m - 要存储在此地图中的映射
UnsupportedOperationException -如果
putAll操作不受此地图支持
ClassCastException - 如果指定地图中的键或值的类阻止它存储在此映射中
NullPointerException - 如果指定的映射为空,或者该映射不允许空值或值,并且指定的映射包含空值或值
IllegalArgumentException - 如果指定地图中的键或值的某些属性阻止其存储在此映射中
public void clear()
clear在接口
Map<K,V>
注意,此实现抛出UnsupportedOperationException如果entrySet不支持clear操作。
UnsupportedOperationException -如果
clear操作不受此地图支持
public Set<K> keySet()
Set视图。
该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。
如果在集合中的迭代过程中修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。
该组支持元件移除,即从映射中相应的映射,经由Iterator.remove,Set.remove,removeAll,retainAll和clear操作。
它不支持add或addAll操作。
keySet在接口
Map<K,V>
AbstractSet的集合 。
子类的iterator方法在该地图的entrySet()迭代器上返回“包装对象”。
size方法将该地图的size方法和contains方法委托给本地图的containsKey方法。
该集合是在第一次调用此方法时创建的,并响应所有后续调用而返回。 不执行同步,因此对该方法的多次调用将不会全部返回相同的集合。
public Collection<V> values()
Collection视图。
集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。
如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。
该collection支持元素移除,即从映射中相应的映射,经由Iterator.remove,Collection.remove,removeAll,retainAll和clear操作。
它不支持add或addAll操作。
values在接口
Map<K,V>
AbstractCollection的集合 。
子类的iterator方法通过该映射的entrySet()迭代器返回“包装对象”。
size方法将该地图的size方法和contains方法委托给本地图的containsValue方法。
该集合是在第一次调用此方法时创建的,并响应所有后续调用而返回。 不执行同步,因此对该方法的多次调用将不会全部返回相同的集合。
public abstract Set<Map.Entry<K,V>> entrySet()
Map
Set视图。
该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。
如果在集合中的迭代(除了通过迭代器自己的remove操作,或通过迭代器返回的映射条目上的setValue操作之外)修改映射,则迭代的结果是未定义的。
该组支持元件移除,即从映射中相应的映射,经由Iterator.remove,Set.remove,removeAll,retainAll和clear操作。
它不支持add或addAll操作。
public boolean equals(Object o)
equals在接口
Map<K,V>
equals在
Object
o - 要与此映射相等的对象进行比较
Object.hashCode() , HashMap
public int hashCode()
Object.hashCode()的一般合同的要求 。
hashCode在接口
Map<K,V>
hashCode在
Object
hashCode() ,并将结果相加。
Map.Entry.hashCode() ,
Object.equals(Object) ,
Set.equals(Object)
public String toString()
String.valueOf(Object) 。
protected Object clone() throws CloneNotSupportedException
clone在
Object
CloneNotSupportedException - 如果对象的类不支持Cloneable接口。
覆盖clone方法的子类也可以抛出此异常以指示实例无法克隆。
Cloneable
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.