将列表转换为ConcurrentSet的最简单方法JAVA
在Java中,如何将列表(比如ArrayList)转换为ConcurrentSet 我知道这个答案:将列表转换为ConcurrentSet的最简单方法JAVA,java,Java,在Java中,如何将列表(比如ArrayList)转换为ConcurrentSet 我知道这个答案: 但我似乎无法让它在ConcurrentSet上工作。您可以这样进行转换 public static <E> Set<E> toConcurrentSet(Collection<E> coll) { Set<E> set = Collections.newSetFromMap(new ConcurrentHashMap<>());
但我似乎无法让它在ConcurrentSet上工作。您可以这样进行转换
public static <E> Set<E> toConcurrentSet(Collection<E> coll) {
Set<E> set = Collections.newSetFromMap(new ConcurrentHashMap<>());
set.addAll(coll);
return set;
}
publicstaticset到concurrentset(Collection coll){
Set=Collections.newSetFromMap(新的ConcurrentHashMap());
set.addAll(coll);
返回集;
}
如果使用ConcurrentSet表示可以同时访问的集合,则可以尝试:
Set<Foo> foo = Collections.synchronizedSet(new HashSet<Foo>(myList));
Set foo=Collections.synchronizedSet(新HashSet(myList));
返回的集将是线程安全的。您所说的
ConcurrentSet
是什么意思?有一个线程安全的JDK实现Set
--,因此您可以轻松地使用它的集合
-arg构造函数;现在我看到ConcurrentSet不是JDK的一部分,而是我下载的另一个库的一部分。我想这就是为什么我被如此严厉地否决的原因:为什么,在static关键字之后-在Set的返回类型之前?可以被简化为Collections.newSetFromMap(list.stream().collect(toConcurrentMap(k->k,k->Boolean.TRUE))代码>