Java ConcurrentHashMap类2024 年 12 月 16 日 | 阅读 5 分钟 一个支持检索完全并发和更新高预期并发的哈希表。此类遵循与Hashtable相同的函数规范,并包含与Hashtable的每个方法相对应的版本。但是,尽管所有操作都是线程安全的,但检索操作不涉及锁定,并且没有锁定整个表的机制来阻止所有访问。此类在依赖其线程安全但非其同步细节的程序中与Hashtable完全可互操作。 Java ConcurrentHashMap类声明ConcurrentHashMap类方法列表否 | 方法 | 描述 |
---|
1. | public void clear() | ConcurrentHashMap类的clear()方法会移除此映射中的所有映射关系。 | 2. | public V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) | ConcurrentHashMap类的compute()方法会尝试为指定的键及其当前映射值(如果当前没有映射,则为null)计算一个映射关系。 | 3. | public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) | ConcurrentHashMap类的computeIfAbsent()方法会尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非该值是null。如果指定的键尚未与值关联。 | 4. | public V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) | ConcurrentHashMap类的computeIfPresent()方法如果指定键的值存在,则尝试计算给定键及其当前映射值的新映射。 | 5. | public boolean contains(Object value) | ConcurrentHashMap类的contains()方法会测试此表中是否有某个键映射到指定的值。 | 6. | public boolean containsKey(Object key) | ConcurrentHashMap类的containsKey()方法会测试指定的对象是否是此表中的一个键。 | 7. | public boolean containsValue(Object value) | ConcurrentHashMap类的containsValue()方法如果此映射将一个或多个键映射到指定值,则返回true。注意:此方法可能需要对映射进行完整遍历,并且比containsKey方法慢得多。 | 8. | public Enumeration<V> elements() | ConcurrentHashMap类的elements()方法返回此表中值的枚举。 | 9. | public Set<Map.Entry<K,V>> entrySet() | ConcurrentHashMap类的entrySet()方法返回此映射中包含的映射的Set视图。对映射的更改会反映在Set中,反之亦然。 | 10. | public boolean equals(Object o) | ConcurrentHashMap类的elements()方法将指定的对象与此映射进行相等性比较,如果给定对象是一个与此映射具有相同映射关系的映射,则返回true。 | 11. | public V get(Object key) | ConcurrentHashMap类的get()方法返回指定键映射到的值,如果此映射不包含指定键的映射,则返回null。 | 12. | public V getOrDefault(Object key, V defaultValue) | ConcurrentHashMap类的getOrDefault()方法返回指定键映射到的值,如果此映射不包含指定键的映射,则返回给定的默认值。 | 13. | public int hashCode() | ConcurrentHashMap类的hashcode()方法返回此Map的哈希码值,即映射中每个键值对的key.hashCode() ^ value.hashCode()之和。 | 14. | public Enumeration<K> keys() | ConcurrentHashMap类的keys()方法返回此表中键的枚举。 | 15. | public ConcurrentHashMap.KeySetView<K,V> keySet() public ConcurrentHashMap.KeySetView<K,V> keySet(V mappedValue) | ConcurrentHashMap类的keySet()方法返回此映射中包含的键的Set视图。Set由映射支持,因此对映射的更改会反映在Set中,反之亦然。 | 16. | public long mappingCount() | ConcurrentHashMap类的mappingCount()方法返回映射的数量。返回的值是估计值;如果存在并发插入或删除,则实际计数可能有所不同。 | 17. | public V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) | ConcurrentHashMap类的merge()方法如果指定的键尚未与(非null)值关联,则将其与给定的值关联。 | 18. | public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet() public static <K> ConcurrentHashMap.KeySetView<K,Boolean> newKeySet(int initialCapacity) | ConcurrentHashMap类的newKeySet()方法从给定的类型创建由ConcurrentHashMap支持的新Set,其值为Boolean.TRUE。 | 19. | public V put(K key, V value) | ConcurrentHashMap类的put()方法将指定的键映射到此表中的指定值。 | 20. | public void putAll(Map<? extends K,? extends V> m) | ConcurrentHashMap类的putAll()方法将指定映射中的所有映射复制到此映射中。这些映射会替换此映射当前拥有的任何当前指定映射的键。 | 21. | public V putIfAbsent(K key, V value) | ConcurrentHashMap类的putIfAbsent()方法如果指定的键尚未与值关联,则将其与给定的值关联。这等同于,对于此映射。 | 22. | public V remove(Object key) public boolean remove(Object key, Object value) | ConcurrentHashMap类的remove()方法会从此映射中移除键(及其对应的映射值)。如果键不在映射中,此方法不执行任何操作。 | 23. | public V replace(K key, V value) public boolean replace(K key, V oldValue, V newValue) | ConcurrentHashMap类的replace()方法仅当条目当前映射到某个值时,才会替换该键的条目。这等同于,对于此映射。 | 24. | public String toString() | ConcurrentHashMap类的toString()方法返回此映射的字符串表示形式。字符串表示形式包含一个键值映射列表(顺序不固定),用大括号 (“{}”)括起来。 | 25. | public void forEach(long parallelismThreshold, BiConsumer<? super K,? super V> action) public <U> void forEach(long parallelismThreshold, BiFunction<? super K,? super V,? extends U> transformer, Consumer<? super U> action) | ConcurrentHashMap类的forEach()方法对每个(键,值)执行给定的操作。 | 26. | public Collection<V> values() | ConcurrentHashMap类的values()方法返回此映射中包含的值的Collection视图。该映射支持该Collection,因此对映射的更改会反映在Collection中,反之亦然。该Collection支持元素移除,通过Iterator移除映射中对应的映射关系。 |
Java ConcurrentHashMap类示例:computeIfAbsent()立即测试输出 HashMap values :
{k1=100, k2=200, k3=300, k4=400}
New HashMap after computeIfAbsent :
{k1=100, k2=200, k3=300, k4=400, k5=500, k6=600}
Java ConcurrentHashMap类示例:containsValue()立即测试输出 Mappings are: {AAA=10, CCC=25, BBB=15, EEE=30, DDD=255}
is 255 present? :: true
|