Java 8引入了获取并发Set实现的新方法
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();
有什么理由喜欢新方法吗?
有什么优点/缺点吗?
ConcurrentHashMap.newKeySet()应该会更有效,因为它删除了一个间接级别。Collections.newSetFromMap(map)主要基于将操作重定向到map.keySet(),但ConcurrentHashMap.newKeySet()与map.keySet()自身非常接近(仅在具有附加支持的情况下)。
ConcurrentHashMap.newKeySet()
Collections.newSetFromMap(map)
map.keySet()
至于功能,我认为没有区别。