java - remove()方法在传统集合和Java并发集合中有什么优势?

标签 java collections

<分区>

我知道像hashMap 这样的传统集合的remove() 方法和像concurrentHashMap 这样的并发集合的根本区别。在concurrentHashmap中,JVM会先匹配键和值,然后再移除多线程环境所需的键值对象。 它们之间还有其他区别吗?

最佳答案

我想你是在问为什么并发映射中有第二个 remove 方法。

map 有:

V remove​(Object key)

ConcurrentMap 有一个附加方法:

boolean remove​(Object key, Object value)

(事实上,自 1.8 以来,Map 将此作为默认方法。)

在一个非并发的 Map 中,双参数形式可以通过组合一个 get 后跟 remove 来轻松编写,代价是两次查找。然而,并发操作并不组合。对于并发映射,您可能会看到循环中使用了 remove,这与通常使用 compareAndSet 的方式类似。

如果您第一次使用 entrySet,则可以通过普通集合接口(interface)在单个操作中执行删除操作。它只是不太方便或不明显。

关于java - remove()方法在传统集合和Java并发集合中有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56412024/

相关文章:

java - Couchbase : List available Buckets, 范围和集合可在具有 Java SDK 3 的集群中使用

java - 什么是 Java 中好的可调整大小、随机访问、高效的字节 vector 类?

java - 如何在 java SE 应用程序中使用 JPA EntityManager

java - 带有前导空格而不是零的简单日期格式

scala - Scala 中用于具有继承返回类型的集合的最小框架

c# - 在不使用循环的情况下在 ObservableCollection 中查找项目

java - 启动完成后 BroadcastReceiver 不工作

java - 打破 Transformer 流程​​ Spring Integration

java - java中使用c3p0的连接池

ios - 如何保存多个阵列的图像名称?