我知道像remove()
这样的传统集合的hashMap
方法和像concurrentHashMap
这样的并发集合之间的根本区别。在concurrentHashmap
中,JVM将在删除多线程环境所需的键值对象之前将键和值都匹配。
它们之间还有其他区别吗?
答案 0 :(得分:3)
我认为您是在问为什么并发映射中还有第二个remove
方法。
Map
具有:
V remove(Object key)
ConcurrentMap
具有其他方法:
boolean remove(Object key, Object value)
(事实上,Map
自从1.8开始就将其作为默认方法。)
在非并发Map
中,可以通过在两个查询的代价下组成get
和remove
来容易地编写两个参数形式。但是,并发操作不组成。对于并发映射,您可能会看到remove
在循环中的使用类似于通常使用compareAndSet
的方式。
如果您首次使用entrySet
,则可以通过普通的collections接口通过一次操作执行remove操作。只是不是很方便或显而易见。