一尘不染

ConcurrentHashMap.newKeySet()与Collections.newSetFromMap()

java

Java 8引入了获取并发Set实现的新方法

// Pre-Java-8 way to create a concurrent set
Set<String> oldStyle = Collections.newSetFromMap(new ConcurrentHashMap<>());
// New method in Java 8
Set<String> newStyle = ConcurrentHashMap.newKeySet();

有什么理由喜欢新方法吗?

有什么优点/缺点吗?


阅读 377

收藏
2020-12-03

共1个答案

一尘不染

ConcurrentHashMap.newKeySet()应该会更有效,因为它删除了一个间接级别。Collections.newSetFromMap(map)主要基于将操作重定向到map.keySet(),但ConcurrentHashMap.newKeySet()map.keySet()自身非常接近(仅在具有附加支持的情况下)。

至于功能,我认为没有区别。

2020-12-03