<分区>
我知道像hashMap
这样的传统集合的remove()
方法和像concurrentHashMap
这样的并发集合的根本区别。在concurrentHashmap
中,JVM会先匹配键和值,然后再移除多线程环境所需的键值对象。
它们之间还有其他区别吗?
标签 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
scala - Scala 中用于具有继承返回类型的集合的最小框架
c# - 在不使用循环的情况下在 ObservableCollection 中查找项目
java - 启动完成后 BroadcastReceiver 不工作