Most visited

Recently visited

Added in API level 1

Map

public interface Map

java.util.Map<K, V>
Known Indirect Subclasses


将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值。

这个接口取代了 Dictionary类,它是一个完全抽象的类而不是接口。

Map接口提供三个集合视图 ,这些视图允许将地图内容视为一组键,值集合或键值映射集。 地图的顺序被定义为其中在地图上的集合视图迭代返回元素的顺序。 一些地图实现,例如TreeMap类,对它们的顺序做出了特定的保证; 其他人,如HashMap类,不。

注意:如果可变对象用作映射键,则必须非常小心。 如果对象的值以影响equals比较的方式更改,而对象是地图中的键,则未指定地图的行为。 这种禁令的一个特例是,地图不允许自己作为关键字。 虽然允许地图将其自身包含为值,但建议您格外小心: equalshashCode方法在此类地图上不再明确定义。

所有通用映射实现类都应该提供两个“标准”构造函数:一个void(无参数)构造函数,它创建一个空映射,以及一个构造函数,它带有一个类型为Map参数,它创建一个具有相同键值的新映射映射作为其论点。 实际上,后者的构造函数允许用户复制任何地图,生成所需类的等效地图。 没有办法执行这个建议(因为接口不能包含构造函数),但是JDK中的所有通用映射实现都符合。

如果此映射不支持该操作,则指定此界面中包含的“破坏性”方法,即修改其操作所在的映射的方法,以引发UnsupportedOperationException 如果是这种情况,如果调用对地图没有影响,这些方法可能(但不是必需)抛出UnsupportedOperationException 例如,在不可修改的映射上调用putAll(Map)方法可能(但不是必需)抛出异常,如果映射的“叠加”映射为空。

一些映射实现对它们可能包含的键和值有限制。 例如,某些实现禁止空键和值,有些实现对键的类型有限制。 尝试插入不合格的密钥或值会引发未检查的异常,通常为NullPointerExceptionClassCastException 试图查询不合格键或值的存在可能会引发异常,或者它可能仅返回false; 一些实现将展现前一种行为,一些将展现后者。 更一般地说,尝试对不合格的键或值执行操作(其完成不会导致将不合格的元素插入到映射中)可能会引发异常,或者可能会成功执行。 这种例外在该接口的规范中被标记为“可选”。

根据equals方法定义集合框架接口中的equals方法。 例如, containsKey(Object key)方法的规范说:“返回true当且仅当此映射包含密钥k的映射,例如(key==null ? k==null : key.equals(k)) 该规范应该被解释为意味着调用Map.containsKey与非空参数key会导致key.equals(k)被调用的任意键k 实施方式可以自由地实现优化,由此equals避免调用,例如,通过首先比较两个键的哈希码。 (该hashCode()规格保证具有不相等的哈希码的两个对象可以不相等。)更一般地,各个集合框架接口的实现可以自由地采取下层的指定的行为的优点Object哪里实现者认为合适的方法。

执行映射的递归遍历的一些映射操作可能会失败,并且映射直接或间接包含自身的自我引用实例的异常。 这包括clone()equals()hashCode()toString()方法。 实现可以选择处理自引用场景,但是大多数当前的实现不这样做。

也可以看看:

Summary

Nested classes

interface Map.Entry<K, V>

一个映射条目(键值对)。

Public methods

abstract void clear()

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

default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)

尝试计算指定键和其当前映射值的映射(如果没有当前映射, null )。

default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)

如果指定键尚未与值关联(或映射到 null ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非 null

default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)

如果指定键的值存在且非空,则尝试计算给定键和其当前映射值的新映射。

abstract boolean containsKey(Object key)

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

abstract boolean containsValue(Object value)

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

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

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

abstract boolean equals(Object o)

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

default void forEach(BiConsumer<? super K, ? super V> action)

对此映射中的每个条目执行给定操作,直到处理完所有条目或操作抛出异常为止。

abstract V get(Object key)

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

default V getOrDefault(Object key, V defaultValue)

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

abstract int hashCode()

返回此映射的哈希码值。

abstract boolean isEmpty()

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

abstract Set<K> keySet()

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

default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)

如果指定的键尚未与某个值关联或者与null关联,则将其与给定的非空值相关联。

abstract V put(K key, V value)

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

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

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

default V putIfAbsent(K key, V value)

如果指定的键尚未与值相关联(或映射到 null ), null其与给定值相关联并返回 null ,否则返回当前值。

default boolean remove(Object key, Object value)

只有在指定键当前映射到指定值时,才删除该条目。

abstract V remove(Object key)

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

default boolean replace(K key, V oldValue, V newValue)

仅当当前映射到指定值时才替换指定键的条目。

default V replace(K key, V value)

仅当指定键的条目映射到某个值时才替换该条目。

default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)

用对该条目调用给定函数的结果替换每个条目的值,直到处理完所有条目或者该函数抛出异常。

abstract int size()

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

abstract Collection<V> values()

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

Public methods

clear

Added in API level 1
void clear ()

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

Throws
UnsupportedOperationException if the clear operation is not supported by this map

compute

Added in API level 24
V compute (K key, 
                BiFunction<? super K, ? super V, ? extends V> remappingFunction)

尝试计算指定键和其当前映射值的映射(如果没有当前映射, null )。 例如,要将String msg创建或附加到值映射:

 map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
(Method merge() is often simpler to use for such purposes.)

如果重新映射函数返回null ,映射将被删除(如果最初不存在,则保持不存在)。 如果重映射函数本身抛出一个(未经检查的)异常,则重新抛出异常,并且当前映射保持不变。

重新映射函数不应该在计算过程中修改此映射。

实现要求:
  • The default implementation is equivalent to performing the following steps for this map, then returning the current value or null if absent:
     V oldValue = map.get(key);
     V newValue = remappingFunction.apply(key, oldValue);
     if (oldValue != null) {
        if (newValue != null)
           map.put(key, newValue);
        else
           map.remove(key);
     } else {
        if (newValue != null)
           map.put(key, newValue);
        else
           return null;
     }
     

    缺省实现不能保证检测重映射函数在计算过程中是否修改此映射,并在适当的情况下报告错误。 非并发实现应该重写此方法,并且如果在计算过程中检测到重映射函数修改此映射,则尽最大努力抛出ConcurrentModificationException 并发实现应该重写此方法,如果在计算过程中检测到重映射函数修改此映射,并且结果计算永远不会完成,那么尽最大努力抛出IllegalStateException

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。 特别是,子接口ConcurrentMap所有实现必须记录重新映射函数是否仅在该值不存在时以原子方式应用一次。

Parameters
key K: key with which the specified value is to be associated
remappingFunction BiFunction: the remapping function to compute a value
Returns
V the new value associated with the specified key, or null if none
Throws
NullPointerException if the specified key is null and this map does not support null keys, or the remappingFunction is null
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the class of the specified key or value prevents it from being stored in this map (optional)
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map (optional)

computeIfAbsent

Added in API level 24
V computeIfAbsent (K key, 
                Function<? super K, ? extends V> mappingFunction)

如果指定的键尚未与值关联(或映射到 null ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非 null

如果映射函数返回null ,则不记录映射。 如果映射函数本身抛出(未经检查的)异常,则重新抛出异常,并且不记录映射。 最常见的用法是构造一个新的对象作为初始映射值或记忆结果,如下所示:

 map.computeIfAbsent(key, k -> new Value(f(k)));
 

或者实现一个多值映射, Map<K,Collection<V>> ,每个键支持多个值:

 map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);
 

计算过程中映射函数不应修改此映射。

实现要求:
  • The default implementation is equivalent to the following steps for this map, then returning the current value or null if now absent:
     if (map.get(key) == null) {
         V newValue = mappingFunction.apply(key);
         if (newValue != null)
             map.put(key, newValue);
     }
     

    缺省实现不能保证检测映射函数在计算过程中是否修改此映射,并在适当情况下报告错误。 非并发实现应该重写此方法,并且如果在计算过程中检测到映射函数修改此映射,则ConcurrentModificationException抛出ConcurrentModificationException 并发实现应该重写此方法,并且如果在计算过程中检测到映射函数修改此映射并且结果计算永远不会完成,那么在尽力而为的基础上抛出IllegalStateException

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。 特别是,子接口ConcurrentMap所有实现ConcurrentMap必须记录映射函数是否仅在该值不存在时以原子方式应用一次。

Parameters
key K: key with which the specified value is to be associated
mappingFunction Function: the mapping function to compute a value
Returns
V the current (existing or computed) value associated with the specified key, or null if the computed value is null
Throws
NullPointerException if the specified key is null and this map does not support null keys, or the mappingFunction is null
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the class of the specified key or value prevents it from being stored in this map (optional)
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map (optional)

computeIfPresent

Added in API level 24
V computeIfPresent (K key, 
                BiFunction<? super K, ? super V, ? extends V> remappingFunction)

如果指定键的值存在且非空,则尝试计算给定键和其当前映射值的新映射。

如果重映射函数返回null ,则映射将被删除。 如果重映射函数本身抛出一个(未经检查的)异常,则重新抛出异常,并且当前映射保持不变。

重新映射函数不应该在计算过程中修改此映射。

实现要求:
  • The default implementation is equivalent to performing the following steps for this map, then returning the current value or null if now absent:
     if (map.get(key) != null) {
         V oldValue = map.get(key);
         V newValue = remappingFunction.apply(key, oldValue);
         if (newValue != null)
             map.put(key, newValue);
         else
             map.remove(key);
     }
     

    缺省实现不能保证检测重映射函数在计算过程中是否修改此映射,并在适当的情况下报告错误。 非并发实现应该重写此方法,并且如果在计算过程中检测到重映射函数修改此映射,则尽最大努力抛出ConcurrentModificationException 并发实现应该重写此方法,如果在计算过程中检测到重映射函数修改此映射并且结果计算永远不会完成,那么在尽力而为的基础上抛出IllegalStateException

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。 具体而言,子接口ConcurrentMap所有实现必须记录重新映射函数是否仅在该值不存在时以原子方式应用一次。

Parameters
key K: key with which the specified value is to be associated
remappingFunction BiFunction: the remapping function to compute a value
Returns
V the new value associated with the specified key, or null if none
Throws
NullPointerException if the specified key is null and this map does not support null keys, or the remappingFunction is null
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the class of the specified key or value prevents it from being stored in this map (optional)
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map (optional)

containsKey

Added in API level 1
boolean containsKey (Object key)

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

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 if the key is of an inappropriate type for this map (optional)
NullPointerException if the specified key is null and this map does not permit null keys (optional)

containsValue

Added in API level 1
boolean containsValue (Object value)

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

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 if the value is of an inappropriate type for this map (optional)
NullPointerException if the specified value is null and this map does not permit null values (optional)

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 更正式地说,两个映射m1m2代表相同的映射,如果是m1.entrySet().equals(m2.entrySet()) 这确保了equals方法可以在Map接口的不同实现中正常工作。

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

forEach

Added in API level 24
void forEach (BiConsumer<? super K, ? super V> action)

对此映射中的每个条目执行给定操作,直到处理完所有条目或操作抛出异常为止。 除非实现类另有规定,否则按照条目集迭代的顺序执行操作(如果指定了迭代顺序)。操作抛出的异常会中继给调用者。

实现要求:
  • The default implementation is equivalent to, for this map:
     for (Map.Entry<K, V> entry : map.entrySet())
         action.accept(entry.getKey(), entry.getValue());
     
    The default implementation makes no guarantees about synchronization or atomicity properties of this method. Any implementation providing atomicity guarantees must override this method and document its concurrency properties.
Parameters
action BiConsumer: The action to be performed for each entry
Throws
NullPointerException if the specified action is null
ConcurrentModificationException if an entry is found to be removed during iteration

get

Added in API level 1
V get (Object key)

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

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

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

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 if the key is of an inappropriate type for this map (optional)
NullPointerException if the specified key is null and this map does not permit null keys (optional)

getOrDefault

Added in API level 24
V getOrDefault (Object key, 
                V defaultValue)

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

实现要求:
  • The default implementation makes no guarantees about synchronization or atomicity properties of this method. Any implementation providing atomicity guarantees must override this method and document its concurrency properties.
Parameters
key Object: the key whose associated value is to be returned
defaultValue V: the default mapping of the key
Returns
V the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key
Throws
ClassCastException if the key is of an inappropriate type for this map (optional)
NullPointerException if the specified key is null and this map does not permit null keys (optional)

hashCode

Added in API level 1
int hashCode ()

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

Returns
int the hash code value for this map

也可以看看:

isEmpty

Added in API level 1
boolean isEmpty ()

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

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

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

merge

Added in API level 24
V merge (K key, 
                V value, 
                BiFunction<? super V, ? super V, ? extends V> remappingFunction)

如果指定的键尚未与某个值关联或者与null关联,则将其与给定的非空值相关联。 否则,用给定的重映射函数的结果替换关联的值,或者如果结果为null ,则将其删除。 组合键的多个映射值时,此方法可能会有用。 例如,要创建或附加一个String msg到值映射:

 map.merge(key, msg, String::concat)
 

如果重映射函数返回null ,则映射将被删除。 如果重映射函数本身抛出一个(未经检查的)异常,则重新抛出异常,并且当前映射保持不变。

重新映射函数不应该在计算过程中修改此映射。

实现要求:
  • The default implementation is equivalent to performing the following steps for this map, then returning the current value or null if absent:
     V oldValue = map.get(key);
     V newValue = (oldValue == null) ? value :
                  remappingFunction.apply(oldValue, value);
     if (newValue == null)
         map.remove(key);
     else
         map.put(key, newValue);
     

    缺省实现不能保证检测重映射函数在计算过程中是否修改此映射,并在适当的情况下报告错误。 非并发实现应该重写此方法,并且如果在计算过程中检测到重映射函数修改此映射,则尽最大努力抛出ConcurrentModificationException 并发实现应该重写此方法,并且如果在计算过程中检测到重映射函数修改此映射并且结果计算永远不会完成,那么在尽力而为的基础上抛出IllegalStateException

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。 特别是,子接口ConcurrentMap所有实现ConcurrentMap必须记录重新映射函数是否仅在该值不存在时以原子方式应用一次。

Parameters
key K: key with which the resulting value is to be associated
value V: the non-null value to be merged with the existing value associated with the key or, if no existing value or a null value is associated with the key, to be associated with the key
remappingFunction BiFunction: the remapping function to recompute a value if present
Returns
V the new value associated with the specified key, or null if no value is associated with the key
Throws
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the class of the specified key or value prevents it from being stored in this map (optional)
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map (optional)
NullPointerException if the specified key is null and this map does not support null keys or the value or remappingFunction is null

put

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

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

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 if the put operation is not supported by this map
ClassCastException if the class of the specified key or value prevents it from being stored in this map
NullPointerException if the specified key or value is null and this map does not permit null keys or values
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map

putAll

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

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

Parameters
m Map: mappings to be stored in this map
Throws
UnsupportedOperationException if the putAll operation is not supported by this map
ClassCastException if the class of a key or value in the specified map prevents it from being stored in this map
NullPointerException if the specified map is null, or if this map does not permit null keys or values, and the specified map contains null keys or values
IllegalArgumentException if some property of a key or value in the specified map prevents it from being stored in this map

putIfAbsent

Added in API level 24
V putIfAbsent (K key, 
                V value)

如果指定的键尚未与值相关联(或映射到 null ), null其与给定值相关联并返回 null ,否则返回当前值。

实现要求:
  • The default implementation is equivalent to, for this map:
     V v = map.get(key);
     if (v == null)
         v = map.put(key, value);
    
     return v;
     

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。

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 the specified key, or null if there was no mapping for the key. (A null return can also indicate that the map previously associated null with the key, if the implementation supports null values.)
Throws
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the key or value is of an inappropriate type for this map (optional)
NullPointerException if the specified key or value is null, and this map does not permit null keys or values (optional)
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map (optional)

remove

Added in API level 24
boolean remove (Object key, 
                Object value)

只有在指定键当前映射到指定值时,才删除该条目。

实现要求:
  • The default implementation is equivalent to, for this map:
     if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
         map.remove(key);
         return true;
     } else
         return false;
     

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。

Parameters
key Object: key with which the specified value is associated
value Object: value expected to be associated with the specified key
Returns
boolean true if the value was removed
Throws
UnsupportedOperationException if the remove operation is not supported by this map (optional)
ClassCastException if the key or value is of an inappropriate type for this map (optional)
NullPointerException if the specified key or value is null, and this map does not permit null keys or values (optional)

remove

Added in API level 1
V remove (Object key)

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

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

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

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

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 if the remove operation is not supported by this map
ClassCastException if the key is of an inappropriate type for this map (optional)
NullPointerException if the specified key is null and this map does not permit null keys (optional)

replace

Added in API level 24
boolean replace (K key, 
                V oldValue, 
                V newValue)

仅当当前映射到指定值时才替换指定键的条目。

实现要求:
  • The default implementation is equivalent to, for this map:
     if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
         map.put(key, newValue);
         return true;
     } else
         return false;
     
    The default implementation does not throw NullPointerException for maps that do not support null values if oldValue is null unless newValue is also null.

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。

Parameters
key K: key with which the specified value is associated
oldValue V: value expected to be associated with the specified key
newValue V: value to be associated with the specified key
Returns
boolean true if the value was replaced
Throws
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the class of a specified key or value prevents it from being stored in this map
NullPointerException if a specified key or newValue is null, and this map does not permit null keys or values
NullPointerException if oldValue is null and this map does not permit null values (optional)
IllegalArgumentException if some property of a specified key or value prevents it from being stored in this map

replace

Added in API level 24
V replace (K key, 
                V value)

仅当指定键的条目映射到某个值时才替换该条目。

实现要求:
  • The default implementation is equivalent to, for this map:
     if (map.containsKey(key)) {
         return map.put(key, value);
     } else
         return null;
     

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。

Parameters
key K: key with which the specified value is associated
value V: value to be associated with the specified key
Returns
V the previous value associated with the specified key, or null if there was no mapping for the key. (A null return can also indicate that the map previously associated null with the key, if the implementation supports null values.)
Throws
UnsupportedOperationException if the put operation is not supported by this map (optional)
ClassCastException if the class of the specified key or value prevents it from being stored in this map (optional)
NullPointerException if the specified key or value is null, and this map does not permit null keys or values
IllegalArgumentException if some property of the specified key or value prevents it from being stored in this map

replaceAll

Added in API level 24
void replaceAll (BiFunction<? super K, ? super V, ? extends V> function)

用对该条目调用给定函数的结果替换每个条目的值,直到处理完所有条目或者该函数抛出异常。 函数抛出的异常会传递给调用者。

实现要求:
  • 对于此 map ,默认实现等同于:

     for (Map.Entry<K, V> entry : map.entrySet())
         entry.setValue(function.apply(entry.getKey(), entry.getValue()));
     

    默认实现不保证此方法的同步或原子性属性。 提供原子性保证的任何实现都必须重写此方法并记录其并发性属性。

Parameters
function BiFunction: the function to apply to each entry
Throws
UnsupportedOperationException if the set operation is not supported by this map's entry set iterator.
ClassCastException if the class of a replacement value prevents it from being stored in this map
NullPointerException if the specified function is null, or the specified replacement value is null, and this map does not permit null values
ClassCastException if a replacement value is of an inappropriate type for this map (optional)
NullPointerException if function or a replacement value is null, and this map does not permit null keys or values (optional)
IllegalArgumentException if some property of a replacement value prevents it from being stored in this map (optional)
ConcurrentModificationException if an entry is found to be removed during iteration

size

Added in API level 1
int size ()

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

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

values

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

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

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

Hooray!