传统的收集和Java的并发收集中的remove()方法有什么优势?

时间:2019-06-02 03:38:38

标签: java collections

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

1 个答案:

答案 0 :(得分:3)

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

Map具有:

V remove​(Object key)

ConcurrentMap具有其他方法:

boolean remove​(Object key, Object value)

(事实上,Map自从1.8开始就将其作为默认方法。)

在非并发Map中,可以通过在两个查询的代价下组成getremove来容易地编写两个参数形式。但是,并发操作不组成。对于并发映射,您可能会看到remove在循环中的使用类似于通常使用compareAndSet的方式。

如果您首次使用entrySet,则可以通过普通的collections接口通过一次操作执行remove操作。只是不是很方便或显而易见。