K
-钥匙的Map保持型
V
-映射的值的类型
public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable
Hashtable
,包括对应于每个版本
Hashtable
方法。然而,即使所有的操作都是线程安全的,检索操作不需要锁定,也没有任何支持锁定整个表的方式,防止所有访问。这类是完全兼容的,依靠它的线程安全性而忽略了它的细节
Hashtable
同步程序。
检索操作(包括get
)一般不阻止,所以可能更新业务重叠(包括put
和remove
)。检索反映最近完成的更新操作保持在发病的结果。(正式的,对于一个给定的关键熊之前发生关系的任何更新操作(非空),关键报告更新的值检索。)总的操作如putAll
和clear
,并发检索可能反映插入或移除只有一些条目。同样,迭代器,spliterators和枚举返回元素反映哈希表的状态在某一时刻或由于迭代器/枚举的创作。他们不把ConcurrentModificationException
。然而,迭代器的设计是由在一个时刻只有一个线程使用。牢记总状态的方法包括size
,isEmpty
结果,和containsValue
通常是有用的只有当Map不接受其他线程的并发更新。否则,这些方法的结果反映了短暂的状态,可能是足够的监测或估计的目的,但不为程序控制。
表是动态扩展,当有太多的碰撞(即键有不同的散列码而陷入同样的槽模表的大小),以保持大约两箱每映射的平均预期效果(对应于0.75的负荷因子阈值的大小)。可能有很大的差异,这个平均值的映射被添加和删除,但总体而言,这保持了一个普遍接受的时间/空间权衡的哈希表。然而,调整大小或任何其他类型的哈希表可能是一个相对缓慢的操作。如果可能的话,这是一个好主意,提供估计的大小作为一个可选的initialCapacity
构造函数的参数。另外一个可选的loadFactor
构造函数的参数提供了一个进一步的指定可用于计算的空间量为给定的元素数量分配表密度定制初始表能力。同时,对于这一类的以前版本的兼容性,构造函数可以指定预期的concurrencyLevel
作为浆内施胶的额外提示。注意,使用多种密钥完全相同的hashCode()
是一个肯定的方式来减缓任何哈希表的性能。改善的影响,Comparable
键时,这类可以帮助打破关系键比较的顺序使用。
一个Set
ConcurrentHashMap投影可以被创建(使用newKeySet()
或newKeySet(int)
),或查看(使用keySet(Object)
只有钥匙是兴趣,和映射的值(也许是暂时)不使用或采取相同的定位价值。
ConcurrentHashMap可以作为可扩展的频率图(一种直方图或multiset)利用LongAdder
值和初始化通过computeIfAbsent
。例如,添加一个ConcurrentHashMap<String,LongAdder> freqs
伯爵,您可以使用freqs.computeIfAbsent(k -> new LongAdder()).increment();
这个类和它的观点和迭代器实现所有的可选方法的Map
和Iterator
接口。
像Hashtable
但不像HashMap
,这类不允许null
被用来作为一个键或值。
concurrenthashmaps支持一组串行和并行批量操作,不像大多数Stream
方法,设计是安全的,并经常地,Map被其他线程同时更新甚至应用;例如,当计算在一个共享的注册表值的快照概述。有三种操作,每个有四种形式,接受功能与键,值,条目,和(键,值)参数和/或返回值。因为ConcurrentHashMap的元素是不要求任何特定的方式,可以处理不同的命令在不同的并行执行,所提供的功能的正确性不依赖于任何订购,或任何其他对象或值,可以瞬时变化而计算是在进步;除了每个行动,应该无副作用。在Map.Entry
对象批量操作不支持的方法setValue
。
这些批量操作接受parallelismThreshold
论点。方法继续进行,如果当前的Map大小估计小于给定的阈值。使用价值Long.MAX_VALUE
抑制所有并行。使用价值的最大并行度的1
结果划分成足够的子任务,充分利用ForkJoinPool.commonPool()
是用于所有的并行计算。通常情况下,您将首先选择这些极端值中的一个,然后测量使用在权衡开销和吞吐量之间的值之间的性能。
大容量操作的并发性能遵循那些ConcurrentHashMap:任何非空返回的结果和相关的访问方法get(key)
熊之前发生的关系与相关的插入或更新。任何批量操作的结果反映了这些元素之间的关系的组成(但不一定是原子相对于Map作为一个整体,除非它是已知的是静态的)。相反,因为在Map上的键和值是从来没有空,空作为一个可靠的原子指标目前的任何结果缺乏。为了维护这个属性,空为所有非标量还原操作提供了一个隐式基础。对于双,长,和国际版本的基础上应该有,当与其他的值,返回其他值(更正式,应该减少的单位元)。最常见的减少这些属性;例如,计算总和与基础或基础max_value最低0。
搜索和转换函数提供的参数应该同样返回空,以指示缺乏任何结果(在这种情况下,它是不使用)。在映射的减少的情况下,这也使得变换作为过滤器,返回null(或者,在原始的特化,身份的情况下基础)如果元素不应该结合。您可以创建复合变换和滤波的组成他们自己在这种“零意味着在使用它们之前在搜索或减少操作也没有现在的“规则。
方法接受和/或返回输入参数保持键值关联。他们可能是有用的,例如,当找到最大的价值的关键。请注意,“平原”的入口参数可供使用new AbstractMap.SimpleEntry(k,v)
。
批量操作可能会突然完成,抛出一个在提供的函数的应用程序中遇到的异常。请记住,当处理这样的异常时,其他并发执行函数也可能抛出异常,或将已完成,如果第一个异常没有发生。
加速并行比较序列的形式是常见的但不保证。并行操作涉及小Map简单函数可以执行速度比顺序形式如果基础工作并行计算比计算本身更贵。同样,并行化可能不会导致大量的实际的并行,如果所有的处理器都忙于执行无关的任务。
所有任务方法的所有参数必须是非空的。
这个班的一员 Java Collections Framework。
Modifier and Type | Class and Description |
---|---|
static class |
ConcurrentHashMap.KeySetView<K,V>
一个视图作为一个
Set ConcurrentHashMap的钥匙,在其中添加可使被映射到一个共同的价值。
|
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
Constructor and Description |
---|
ConcurrentHashMap()
创建一个新的,空的映射与默认的初始表大小(16)。
|
ConcurrentHashMap(int initialCapacity)
创建一个新的,空的映射,具有一个初始表大小,可容纳指定数量的元素,而不需要动态调整大小。
|
ConcurrentHashMap(int initialCapacity, float loadFactor)
创建一个新的,一个基于给定数量的元素的初始表的大小空图(
initialCapacity )和初始表密度(
loadFactor )。
|
ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
创建一个新的,一个基于给定数量的元素的初始表的大小空图(
initialCapacity ),表密度(
loadFactor ),并同时更新的线程数(
concurrencyLevel )。
|
ConcurrentHashMap(Map<? extends K,? extends V> m)
创建一个与给定Map相同的映射的新Map。
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
从这个映射中移除所有的映射。
|
V |
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
试图计算出指定键和当前的映射值的映射(或
null 如果没有当前映射)。
|
V |
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
如果指定的键是不是已经与一个值关联,试图使用给定的映射功能,进入到这个Map除非
null 计算其价值。
|
V |
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
如果指定键的值存在,则尝试计算给定键的一个新的映射和它当前的映射值。
|
boolean |
contains(Object value)
如果一些键映射到该表中的指定值,传统的方法测试。
|
boolean |
containsKey(Object key)
测试如果指定的对象是此表中的一个键。
|
boolean |
containsValue(Object value)
返回
true 如果映射到指定的值的一个或多个键。
|
Enumeration<V> |
elements()
返回此表中的值的枚举数。
|
Set<Map.Entry<K,V>> |
entrySet()
返回一个
Set 映射的视图包含在这个Map。
|
boolean |
equals(Object o)
将指定的对象与此映射的相等性进行比较。
|
void |
forEach(BiConsumer<? super K,? super V> action)
在该映射中的每个条目执行给定的操作,直到所有的条目被处理或操作抛出异常。
|
void |
forEach(long parallelismThreshold, BiConsumer<? super K,? super V> action)
为每个执行给定的操作(键,值)。
|
<U> void |
forEach(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, Consumer<? super U> action)
执行每个非空转换的给定动作(键,值)。
|
void |
forEachEntry(long parallelismThreshold, Consumer<? super Map.Entry<K,V>> action)
为每个条目执行给定的操作。
|
<U> void |
forEachEntry(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, Consumer<? super U> action)
对每个条目的每个非空转换执行给定的操作。
|
void |
forEachKey(long parallelismThreshold, Consumer<? super K> action)
为每个键执行给定的动作。
|
<U> void |
forEachKey(long parallelismThreshold, Function<? super K,? extends U> transformer, Consumer<? super U> action)
对每个键的每个非空转换执行给定的操作。
|
void |
forEachValue(long parallelismThreshold, Consumer<? super V> action)
为每个值执行给定的动作。
|
<U> void |
forEachValue(long parallelismThreshold, Function<? super V,? extends U> transformer, Consumer<? super U> action)
对每个值的每个非空转换执行给定的操作。
|
V |
get(Object key)
返回指定的键映射的值,或
null 如果这个Map不包含的键映射。
|
V |
getOrDefault(Object key, V defaultValue)
返回指定键被映射的值,或给定的默认值,如果此映射不包含键的映射。
|
int |
hashCode()
返回的哈希码值这个
Map ,即和,每个键值对映射中,
key.hashCode() ^ value.hashCode() 。
|
boolean |
isEmpty()
返回
true如果这个Map不包含键值的映射。
|
Enumeration<K> |
keys()
返回此表中键的枚举数。
|
ConcurrentHashMap.KeySetView<K,V> |
keySet()
返回一个
Set 的关键视图包含在这个Map。
|
ConcurrentHashMap.KeySetView<K,V> |
keySet(V mappedValue)
|
long |
mappingCount()
返回映射的数目。
|
V |
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
如果指定的键已与(非空)值关联,则将其与给定值关联。
|
static <K> ConcurrentHashMap.KeySetView<K,Boolean> |
newKeySet()
创建一个给定类型的
Boolean.TRUE ConcurrentHashMap支持新
Set 。
|
static <K> ConcurrentHashMap.KeySetView<K,Boolean> |
newKeySet(int initialCapacity)
创建一个给定类型的
Boolean.TRUE ConcurrentHashMap支持新
Set 。
|
V |
put(K key, V value)
将指定的键映射到该表中的指定值。
|
void |
putAll(Map<? extends K,? extends V> m)
从指定的映射到这一个副本的所有映射。
|
V |
putIfAbsent(K key, V value)
如果指定的键已与一个值关联,则将其与给定值关联。
|
<U> U |
reduce(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
返回累积给定的转换所有(键,值)对使用给定的减速器结合值,或为空,如果没有的结果。
|
Map.Entry<K,V> |
reduceEntries(long parallelismThreshold, BiFunction<Map.Entry<K,V>,Map.Entry<K,V>,? extends Map.Entry<K,V>> reducer)
返回积累所有条目使用给定的减速器结合值,或为空,如果没有的结果。
|
<U> U |
reduceEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
返回积累给定的转换所有条目使用给定的减速器结合值,或为空,如果没有的结果。
|
double |
reduceEntriesToDouble(long parallelismThreshold, ToDoubleFunction<Map.Entry<K,V>> transformer, double basis, DoubleBinaryOperator reducer)
返回使用给定的减速器组合值,并给定的基础作为标识值的所有条目的给定转换的结果。
|
int |
reduceEntriesToInt(long parallelismThreshold, ToIntFunction<Map.Entry<K,V>> transformer, int basis, IntBinaryOperator reducer)
返回使用给定的减速器组合值,并给定的基础作为标识值的所有条目的给定转换的结果。
|
long |
reduceEntriesToLong(long parallelismThreshold, ToLongFunction<Map.Entry<K,V>> transformer, long basis, LongBinaryOperator reducer)
返回使用给定的减速器组合值,并给定的基础作为标识值的所有条目的给定转换的结果。
|
K |
reduceKeys(long parallelismThreshold, BiFunction<? super K,? super K,? extends K> reducer)
返回累积所有键的结果,使用给定的减速器组合值,或为空,如果没有。
|
<U> U |
reduceKeys(long parallelismThreshold, Function<? super K,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
返回累积给定的转换所有键的结果,使用给定的减速器组合值,或为零,如果没有。
|
double |
reduceKeysToDouble(long parallelismThreshold, ToDoubleFunction<? super K> transformer, double basis, DoubleBinaryOperator reducer)
返回累积给定的所有键的给定转换的结果,使用给定的减速器组合值,和给定的基础作为一个标识值。
|
int |
reduceKeysToInt(long parallelismThreshold, ToIntFunction<? super K> transformer, int basis, IntBinaryOperator reducer)
返回累积给定的所有键的给定转换的结果,使用给定的减速器组合值,和给定的基础作为一个标识值。
|
long |
reduceKeysToLong(long parallelismThreshold, ToLongFunction<? super K> transformer, long basis, LongBinaryOperator reducer)
返回累积给定的所有键的给定转换的结果,使用给定的减速器组合值,和给定的基础作为一个标识值。
|
double |
reduceToDouble(long parallelismThreshold, ToDoubleBiFunction<? super K,? super V> transformer, double basis, DoubleBinaryOperator reducer)
返回累积给定的所有(键,值)对的结果,使用给定的减速器组合值,和给定的基础作为一个标识值。
|
int |
reduceToInt(long parallelismThreshold, ToIntBiFunction<? super K,? super V> transformer, int basis, IntBinaryOperator reducer)
返回累积给定的所有(键,值)对的结果,使用给定的减速器组合值,和给定的基础作为一个标识值。
|
long |
reduceToLong(long parallelismThreshold, ToLongBiFunction<? super K,? super V> transformer, long basis, LongBinaryOperator reducer)
返回累积给定的所有(键,值)对的结果,使用给定的减速器组合值,和给定的基础作为一个标识值。
|
V |
reduceValues(long parallelismThreshold, BiFunction<? super V,? super V,? extends V> reducer)
返回累积所有值的结果,使用给定的减速器组合值,或为空,如果没有。
|
<U> U |
reduceValues(long parallelismThreshold, Function<? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
返回累积给定的所有值转换的结果,使用给定的减速器组合值,或为零,如果没有。
|
double |
reduceValuesToDouble(long parallelismThreshold, ToDoubleFunction<? super V> transformer, double basis, DoubleBinaryOperator reducer)
返回累积给定的所有值的给定值,使用给定的减速器组合值,和给定的基础作为一个身份值的结果。
|
int |
reduceValuesToInt(long parallelismThreshold, ToIntFunction<? super V> transformer, int basis, IntBinaryOperator reducer)
返回累积给定的所有值的给定值,使用给定的减速器组合值,和给定的基础作为一个身份值的结果。
|
long |
reduceValuesToLong(long parallelismThreshold, ToLongFunction<? super V> transformer, long basis, LongBinaryOperator reducer)
返回累积给定的所有值的给定值,使用给定的减速器组合值,和给定的基础作为一个身份值的结果。
|
V |
remove(Object key)
从这个映射中删除键(和它的相应的值)。
|
boolean |
remove(Object key, Object value)
仅当当前映射到一个给定的值时,移除一个键的条目。
|
V |
replace(K key, V value)
仅当当前映射到某个值时,替换一个键的条目。
|
boolean |
replace(K key, V oldValue, V newValue)
仅当当前映射到一个给定值时,替换一个键的条目。
|
void |
replaceAll(BiFunction<? super K,? super V,? extends V> function)
将每个条目的值替换为在该项上调用给定函数的结果,直到所有的条目都被处理或函数抛出异常。
|
<U> U |
search(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> searchFunction)
返回一个非空的结果,从应用给定的搜索功能上的每个(键,值),或空,如果没有。
|
<U> U |
searchEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> searchFunction)
返回一个非空的结果,从应用在每个条目上的给定的搜索功能,或为空,如果没有。
|
<U> U |
searchKeys(long parallelismThreshold, Function<? super K,? extends U> searchFunction)
返回一个非空的结果,从应用在每个键上的给定的搜索功能,或为空,如果没有。
|
<U> U |
searchValues(long parallelismThreshold, Function<? super V,? extends U> searchFunction)
返回一个非空的结果,从应用给定的搜索功能上的每个值,或空,如果没有。
|
int |
size()
返回这个映射中的键值映射的数目。
|
String |
toString()
返回此映射的字符串表示形式。
|
Collection<V> |
values()
返回一个
Collection 视图的值包含在这个Map。
|
clone
public ConcurrentHashMap()
public ConcurrentHashMap(int initialCapacity)
initialCapacity
-执行内部施胶来适应这种多元素。
IllegalArgumentException
如果元素的初始容量为负
public ConcurrentHashMap(Map<? extends K,? extends V> m)
m
-Map
public ConcurrentHashMap(int initialCapacity, float loadFactor)
initialCapacity
)和初始表密度(
loadFactor
)。
initialCapacity
-初始容量。执行内部的大小,以适应这个许多元素,给定的指定的负载因子。
loadFactor
-负载因子(表密度)建立初始表的大小
IllegalArgumentException
如果元素的初始容量为负或负载因子是负的
public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
initialCapacity
),表密度(
loadFactor
),并同时更新的线程数(
concurrencyLevel
)。
initialCapacity
-初始容量。执行内部的大小,以适应这个许多元素,给定的指定的负载因子。
loadFactor
-负载因子(表密度)建立初始表的大小
concurrencyLevel
-同时更新线程的数量估计。该实现可以使用这个值作为一个大小提示。
IllegalArgumentException
如果初始容量为负或负载因子或concurrencylevel非正
public int size()
public boolean isEmpty()
public V get(Object key)
null
如果这个Map不包含的键映射。
更正式地说,如果这个图中包含了从关键k
到价值v
这样key.equals(k)
映射,那么这个方法返回v
;否则返回null
。(最多可以有一个这样的映射。)
get
接口
Map<K,V>
get
方法重写,继承类
AbstractMap<K,V>
key
-关键的相关值被返回
null
如果这个Map不包含的键映射
NullPointerException
-如果指定的键是空的
public boolean containsKey(Object key)
containsKey
接口
Map<K,V>
containsKey
方法重写,继承类
AbstractMap<K,V>
key
-可能的关键
true
当且仅当指定的对象是表中的一个关键,由
equals
方法确定;
false
否则
NullPointerException
-如果指定的键是空的
public boolean containsValue(Object value)
true
如果映射到指定的值的一个或多个键。注意:此方法可能需要一个完整的遍历的Map,和比的方法
containsKey
慢得多。
containsValue
接口
Map<K,V>
containsValue
方法重写,继承类
AbstractMap<K,V>
value
-它的存在价值进行测试
true
映射到指定的值的一个或多个键
NullPointerException
-如果指定的值为空
public V put(K key, V value)
该值可以通过一个关键等于原键调用get
方法检索。
put
接口
Map<K,V>
put
方法重写,继承类
AbstractMap<K,V>
key
键与指定的值是相关联的
value
值必须与指定键关联
key
以前的值,或者
null
如果没有映射的
key
NullPointerException
-如果指定的键或值为空
public void putAll(Map<? extends K,? extends V> m)
public V remove(Object key)
remove
接口
Map<K,V>
remove
方法重写,继承类
AbstractMap<K,V>
key
-需要去除的关键
key
以前的值,或者
null
如果没有映射的
key
NullPointerException
-如果指定的键是空的
public void clear()
public ConcurrentHashMap.KeySetView<K,V> keySet()
Set
的关键视图包含在这个Map。该集合是由Map的支持,所以对Map的变化反映在集合中,反之亦然。设置支持元素的去除,从这张Map中移除相应的映射,通过
Iterator.remove
,
Set.remove
,
removeAll
,
retainAll
,和
clear
操作。它不支持
add
或
addAll
操作。
视图的迭代器和spliterators是weakly consistent。
视图的spliterator
报道Spliterator.CONCURRENT
,Spliterator.DISTINCT
,和Spliterator.NONNULL
。
public Collection<V> values()
Collection
的价值观包含在这个Map。集合是由Map支持的,所以对Map的变化反映在集合中,反之亦然。收集支持元素的去除,从这张Map中移除相应的映射,通过
Iterator.remove
,
Collection.remove
,
removeAll
,
retainAll
,和
clear
操作。它不支持
add
或
addAll
操作。
视图的迭代器和spliterators是weakly consistent。
视图的spliterator
报道Spliterator.CONCURRENT
和Spliterator.NONNULL
。
public Set<Map.Entry<K,V>> entrySet()
Set
视图的映射包含在这个Map。该集合是由Map的支持,所以对Map的变化反映在集合中,反之亦然。设置支持元素的去除,从Map中移除相应的映射,通过
Iterator.remove
,
Set.remove
,
removeAll
,
retainAll
,和
clear
操作。
视图的迭代器和spliterators是weakly consistent。
视图的spliterator
报道Spliterator.CONCURRENT
,Spliterator.DISTINCT
,和Spliterator.NONNULL
。
public int hashCode()
Map
,即和,每个键值对映射中,
key.hashCode() ^ value.hashCode()
。
hashCode
接口
Map<K,V>
hashCode
方法重写,继承类
AbstractMap<K,V>
Map.Entry.hashCode()
,
Object.equals(Object)
,
Set.equals(Object)
public String toString()
{}
”)。相邻的映射是由字符
", "
隔开(逗号和空格)。每个键值映射呈现为关键的后面紧跟一个等号(“
=
”)其次是相关的价值。
toString
方法重写,继承类
AbstractMap<K,V>
public boolean equals(Object o)
true
如果给定的对象是一个Map,这个Map相同的映射。此操作可能会返回误导性的结果,如果这两种映射在执行过程中同时修改了。
equals
接口
Map<K,V>
equals
方法重写,继承类
AbstractMap<K,V>
o
对象进行比较,这张Map的平等
true
指定对象是否等于这个Map
Object.hashCode()
,
HashMap
public V putIfAbsent(K key, V value)
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key);
除了动作是自动执行。
putIfAbsent
接口
ConcurrentMap<K,V>
putIfAbsent
接口
Map<K,V>
key
键与指定的值是相关联的
value
值必须与指定键关联
null
如果没有键映射
NullPointerException
-如果指定的键或值为空
public boolean remove(Object key, Object value)
if (map.containsKey(key) && Objects.equals(map.get(key), value)) {
map.remove(key);
return true;
} else
return false;
除了动作是自动执行。
remove
接口
ConcurrentMap<K,V>
remove
接口
Map<K,V>
key
键与指定值相关联的
value
值将与指定键关联
true
如果值被删除
NullPointerException
-如果指定的键是空的
public boolean replace(K key, V oldValue, V newValue)
if (map.containsKey(key) && Objects.equals(map.get(key), oldValue)) {
map.put(key, newValue);
return true;
} else
return false;
除了动作是自动执行。
replace
接口
ConcurrentMap<K,V>
replace
接口
Map<K,V>
key
键与指定值相关联的
oldValue
值将与指定键关联
newValue
值必须与指定键关联
true
如果值代替
NullPointerException
如果任一参数为空
public V replace(K key, V value)
if (map.containsKey(key)) {
return map.put(key, value);
} else
return null;
除了动作是自动执行。
replace
接口
ConcurrentMap<K,V>
replace
接口
Map<K,V>
key
键与指定值相关联的
value
值必须与指定键关联
null
如果没有键映射
NullPointerException
-如果指定的键或值为空
public V getOrDefault(Object key, V defaultValue)
getOrDefault
接口
ConcurrentMap<K,V>
getOrDefault
接口
Map<K,V>
key
-关键的相关值被返回
defaultValue
-如果这Map没有包含给定的键映射返回的值
NullPointerException
-如果指定的键是空的
public void forEach(BiConsumer<? super K,? super V> action)
ConcurrentMap
public void replaceAll(BiFunction<? super K,? super V,? extends V> function)
ConcurrentMap
replaceAll
接口
ConcurrentMap<K,V>
replaceAll
接口
Map<K,V>
function
-功能适用于每一个条目
public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
null
计算其价值。整个方法的调用是自动执行的功能,所以在每一次应用最关键。一些试图在这个Map上的其他线程的更新操作可能会被阻止,而计算正在进行中,所以计算应该是简短的和简单的,并不能试图更新任何其他映射这个Map。
computeIfAbsent
接口
ConcurrentMap<K,V>
computeIfAbsent
接口
Map<K,V>
key
键与指定的值是相关联的
mappingFunction
的函数来计算一个值
NullPointerException
-如果指定的键或映射函数是空的
IllegalStateException
如果计算任务尝试递归更新Map,否则不完整
RuntimeException
或错误如果映射函数的如此,在这种情况下,图左未
public V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
computeIfPresent
接口
ConcurrentMap<K,V>
computeIfPresent
接口
Map<K,V>
key
键的值可能是相关的
remappingFunction
的函数来计算一个值
NullPointerException
-如果指定的键或remappingfunction是空的
IllegalStateException
如果计算任务尝试递归更新Map,否则不完整
RuntimeException
或错误如果remappingfunction这么做,在这种情况下,映射是不变的
public V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
null
如果没有当前映射)。整个方法的调用是自动执行。一些试图在这个Map上的其他线程的更新操作可能会被阻止,而计算正在进行中,所以计算应该是简短的和简单的,并不能试图更新任何其他映射这个Map。
compute
接口
ConcurrentMap<K,V>
compute
接口
Map<K,V>
key
键与指定的值是相关联的
remappingFunction
的函数来计算一个值
NullPointerException
-如果指定的键或remappingfunction是空的
IllegalStateException
如果计算任务尝试递归更新Map,否则不完整
RuntimeException
或错误如果remappingfunction这么做,在这种情况下,映射是不变的
public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
null
。整个方法的调用是自动执行。一些试图在这个Map上的其他线程的更新操作可能会被阻止,而计算正在进行中,所以计算应该是简短的和简单的,并不能试图更新任何其他映射这个Map。
merge
接口
ConcurrentMap<K,V>
merge
接口
Map<K,V>
key
键与指定的值是相关联的
value
-使用价值
remappingFunction
-函数重新计算值如果存在
NullPointerException
-如果指定的键或remappingfunction是空的
RuntimeException
或错误如果remappingfunction这么做,在这种情况下,映射是不变的
public boolean contains(Object value)
containsValue(Object)
,确保班
Hashtable
完全兼容,支持这种方法的java集合框架出台之前。
value
-搜索值
true
当且仅当某些关键映射到
value
参数表中的
equals
方法确定;
false
否则
NullPointerException
-如果指定的值为空
public Enumeration<K> keys()
keySet()
public Enumeration<V> elements()
values()
public long mappingCount()
size()
因为ConcurrentHashMap中可能包含更多的映射比可以表示为一个int返回值是一个估计;实际计数可能如果有并发插入或者删除操作不同。
public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet()
Boolean.TRUE
ConcurrentHashMap支持新
Set
。
K
-返回的集合的元素类型
public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet(int initialCapacity)
Boolean.TRUE
ConcurrentHashMap支持新
Set
。
K
-返回的集合的元素类型
initialCapacity
-执行内部施胶来适应这种多元素。
IllegalArgumentException
如果元素的初始容量为负
public ConcurrentHashMap.KeySetView<K,V> keySet(V mappedValue)
Set
视图,使用给定的通用映射值的任何增加(即,
Collection.add(E)
和
Collection.addAll(Collection)
)。这是当然,只有适当的,如果它是可以接受的使用相同的值,从这个视图的所有添加。
mappedValue
-映射的值使用任何添加剂
NullPointerException
-如果mappedvalue是空的
public void forEach(long parallelismThreshold, BiConsumer<? super K,? super V> action)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
action
-行动
public <U> void forEach(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, Consumer<? super U> action)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,行为不适用)
action
-行动
public <U> U search(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> searchFunction)
U
-搜索函数的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
searchFunction
-一个函数返回一个非零结果成功,否则无效
public <U> U reduce(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,不结合)
reducer
-交换联想功能相结合
public double reduceToDouble(long parallelismThreshold, ToDoubleBiFunction<? super K,? super V> transformer, double basis, DoubleBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public long reduceToLong(long parallelismThreshold, ToLongBiFunction<? super K,? super V> transformer, long basis, LongBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public int reduceToInt(long parallelismThreshold, ToIntBiFunction<? super K,? super V> transformer, int basis, IntBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public void forEachKey(long parallelismThreshold, Consumer<? super K> action)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
action
-行动
public <U> void forEachKey(long parallelismThreshold, Function<? super K,? extends U> transformer, Consumer<? super U> action)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,行为不适用)
action
-行动
public <U> U searchKeys(long parallelismThreshold, Function<? super K,? extends U> searchFunction)
U
-搜索函数的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
searchFunction
-一个函数返回一个非零结果成功,否则无效
public K reduceKeys(long parallelismThreshold, BiFunction<? super K,? super K,? extends K> reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
reducer
-交换联想功能相结合
public <U> U reduceKeys(long parallelismThreshold, Function<? super K,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,不结合)
reducer
-交换联想功能相结合
public double reduceKeysToDouble(long parallelismThreshold, ToDoubleFunction<? super K> transformer, double basis, DoubleBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public long reduceKeysToLong(long parallelismThreshold, ToLongFunction<? super K> transformer, long basis, LongBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public int reduceKeysToInt(long parallelismThreshold, ToIntFunction<? super K> transformer, int basis, IntBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public void forEachValue(long parallelismThreshold, Consumer<? super V> action)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
action
-行动
public <U> void forEachValue(long parallelismThreshold, Function<? super V,? extends U> transformer, Consumer<? super U> action)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,行为不适用)
action
-行动
public <U> U searchValues(long parallelismThreshold, Function<? super V,? extends U> searchFunction)
U
-搜索函数的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
searchFunction
-一个函数返回一个非零结果成功,否则无效
public V reduceValues(long parallelismThreshold, BiFunction<? super V,? super V,? extends V> reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
reducer
-交换联想功能相结合
public <U> U reduceValues(long parallelismThreshold, Function<? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,不结合)
reducer
-交换联想功能相结合
public double reduceValuesToDouble(long parallelismThreshold, ToDoubleFunction<? super V> transformer, double basis, DoubleBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public long reduceValuesToLong(long parallelismThreshold, ToLongFunction<? super V> transformer, long basis, LongBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public int reduceValuesToInt(long parallelismThreshold, ToIntFunction<? super V> transformer, int basis, IntBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public void forEachEntry(long parallelismThreshold, Consumer<? super Map.Entry<K,V>> action)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
action
-行动
public <U> void forEachEntry(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, Consumer<? super U> action)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,行为不适用)
action
-行动
public <U> U searchEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> searchFunction)
U
-搜索函数的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
searchFunction
-一个函数返回一个非零结果成功,否则无效
public Map.Entry<K,V> reduceEntries(long parallelismThreshold, BiFunction<Map.Entry<K,V>,Map.Entry<K,V>,? extends Map.Entry<K,V>> reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
reducer
-交换联想功能相结合
public <U> U reduceEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)
U
-变压器的返回类型
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回的转型为一个元素,或空如果没有变换(在这种情况下,不结合)
reducer
-交换联想功能相结合
public double reduceEntriesToDouble(long parallelismThreshold, ToDoubleFunction<Map.Entry<K,V>> transformer, double basis, DoubleBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public long reduceEntriesToLong(long parallelismThreshold, ToLongFunction<Map.Entry<K,V>> transformer, long basis, LongBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
public int reduceEntriesToInt(long parallelismThreshold, ToIntFunction<Map.Entry<K,V>> transformer, int basis, IntBinaryOperator reducer)
parallelismThreshold
-(估计)需要此操作是并行执行的元素个数
transformer
-一个函数返回一个元素的转化
basis
-身份(初始默认值)为减少
reducer
-交换联想功能相结合
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.