Map
providing thread safety and atomicity guarantees.
To maintain the specified guarantees, default implementations of
methods including putIfAbsent
inherited from Map
must be overridden by implementations of this interface. Similarly,
implementations of the collections returned by methods keySet
, values
, and entrySet
must override
methods such as removeIf
when necessary to
preserve atomicity guarantees.
Memory consistency effects: As with other concurrent
collections, actions in a thread prior to placing an object into a
ConcurrentMap
as a key or value
happen-before
actions subsequent to the access or removal of that object from
the ConcurrentMap
in another thread.
This interface is a member of the Java Collections Framework.
Modifier and Type | Method and Description |
---|---|
public default V | compute(K
key with which the specified value is to be associated key, BiFunction<? super K, ? super V, ? extends V> the remapping function to compute a value remappingFunction)Overrides default java. Attempts to compute a mapping for the specified key and its current
mapped value, or |
public default V | computeIfAbsent(K
key with which the specified value is to be associated key, Function<? super K, ? extends V> the mapping function to compute a value mappingFunction)Overrides default java. If the specified key is not already associated with a value (or is mapped
to |
public default V | computeIfPresent(K
key with which the specified value is to be associated key, BiFunction<? super K, ? super V, ? extends V> the remapping function to compute a value remappingFunction)Overrides default java. If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value (optional operation). |
public default void | forEach(BiConsumer<? super K, ? super V>
The action to be performed for each entry action)Overrides default java. Performs the given action for each entry in this map until all entries have been processed or the action throws an exception. |
public default V | getOrDefault(Object
the key whose associated value is to be returned key, V the default mapping of the key defaultValue)Overrides default java. Returns the value to which the specified key is mapped, or
|
public default V | merge(K
key with which the resulting value is to be associated key, 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 value, BiFunction<? super V, ? super V, ? extends V> the remapping function to recompute a value if
present remappingFunction)Overrides default java. If the specified key is not already associated with a value or is associated with null, associates it with the given non-null value (optional operation). |
public V | Returns: the previous value associated with the specified key, ornull 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.)key with which the specified value is to be associated key, V value to be associated with the specified key value)Redeclares as abstract: java. If the specified key is not already associated with a value, associates it with the given value. |
public boolean | Returns: true if the value was removedkey with which the specified value is associated key, Object value expected to be associated with the specified key value)Redeclares as abstract: java. Removes the entry for a key only if currently mapped to a given value. |
public boolean | Returns: true if the value was replacedkey with which the specified value is associated key, V value expected to be associated with the specified key oldValue, V value to be associated with the specified key newValue)Redeclares as abstract: java. Replaces the entry for a key only if currently mapped to a given value. |
public V | Returns: the previous value associated with the specified key, ornull 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.)key with which the specified value is associated key, V value to be associated with the specified key value)Redeclares as abstract: java. Replaces the entry for a key only if currently mapped to some value. |
public default void | replaceAll(BiFunction<? super K, ? super V, ? extends V>
the function to apply to each entry function)Overrides default java. Replaces each entry's value with the result of invoking the given function on that entry until all entries have been processed or the function throws an exception (optional operation). |
compute | back to summary |
---|---|
public default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) Overrides default java. Doc from java. Attempts to compute a mapping for the specified key and its current
mapped value, or
(Method merge() is often simpler to use for such purposes.)
If the remapping function returns The remapping function should not modify this map during computation. Implementation Specification The default implementation is equivalent to performing the following
steps for this
When multiple threads attempt updates, map operations and the
remapping function may be called multiple times.
This implementation assumes that the ConcurrentMap cannot contain null
values and
|
computeIfAbsent | back to summary |
---|---|
public default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) Overrides default java. Doc from java. If the specified key is not already associated with a value (or is mapped
to If the mapping function returns
Or to implement a multi-value map,
The mapping function should not modify this map during computation. Implementation Specification The default implementation is equivalent to the following steps for this
This implementation assumes that the ConcurrentMap cannot contain null
values and
|
computeIfPresent | back to summary |
---|---|
public default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) Overrides default java. Doc from java. If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value (optional operation). If the remapping function returns The remapping function should not modify this map during computation. Implementation Specification The default implementation is equivalent to performing the following
steps for this
When multiple threads attempt updates, map operations and the
remapping function may be called multiple times.
This implementation assumes that the ConcurrentMap cannot contain null
values and
|
forEach | back to summary |
---|---|
public default void forEach(BiConsumer<? super K, ? super V> action) Overrides default java. Doc from java. Performs the given action for each entry in this map until all entries have been processed or the action throws an exception. Unless otherwise specified by the implementing class, actions are performed in the order of entry set iteration (if an iteration order is specified.) Exceptions thrown by the action are relayed to the caller. Implementation Specification The default implementation is equivalent to, for this
Implementation Note The default implementation assumes that
|
getOrDefault | back to summary |
---|---|
public default V getOrDefault(Object key, V defaultValue) Overrides default java. Doc from java. Returns the value to which the specified key is mapped, or
Implementation Note This implementation assumes that the ConcurrentMap cannot
contain null values and
|
merge | back to summary |
---|---|
public default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) Overrides default java. Doc from java. If the specified key is not already associated with a value or is
associated with null, associates it with the given non-null value (optional
operation). Otherwise, replaces the associated value with the results of
the given remapping function, or removes if the result is
If the remapping function returns The remapping function should not modify this map during computation. Implementation Specification The default implementation is equivalent to performing the following
steps for this
When multiple threads attempt updates, map operations and the
remapping function may be called multiple times.
This implementation assumes that the ConcurrentMap cannot contain null
values and
|
putIfAbsent | back to summary |
---|---|
public V putIfAbsent(K key, V value) Redeclares as abstract: java. If the specified key is not already associated
with a value, associates it with the given value.
This is equivalent to, for this
except that the action is performed atomically.
Implementation Note This implementation intentionally re-abstracts the
inappropriate default provided in
|
remove | back to summary |
---|---|
public boolean remove(Object key, Object value) Redeclares as abstract: java. Removes the entry for a key only if currently mapped to a given value.
This is equivalent to, for this
except that the action is performed atomically.
Implementation Note This implementation intentionally re-abstracts the
inappropriate default provided in
|
replace | back to summary |
---|---|
public boolean replace(K key, V oldValue, V newValue) Redeclares as abstract: java. Replaces the entry for a key only if currently mapped to a given value.
This is equivalent to, for this
except that the action is performed atomically.
Implementation Note This implementation intentionally re-abstracts the
inappropriate default provided in
|
replace | back to summary |
---|---|
public V replace(K key, V value) Redeclares as abstract: java. Replaces the entry for a key only if currently mapped to some value.
This is equivalent to, for this
except that the action is performed atomically.
Implementation Note This implementation intentionally re-abstracts the
inappropriate default provided in
|
replaceAll | back to summary |
---|---|
public default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) Overrides default java. Doc from java. Replaces each entry's value with the result of invoking the given function on that entry until all entries have been processed or the function throws an exception (optional operation). Exceptions thrown by the function are relayed to the caller. Implementation Specification The default implementation is equivalent to, for this
The default implementation may retry these steps when multiple
threads attempt updates including potentially calling the function
repeatedly for a given key.
This implementation assumes that the ConcurrentMap cannot contain null
values and
|