将列表转换为ConcurrentSet的最简单方法JAVA

将列表转换为ConcurrentSet的最简单方法JAVA,java,Java,在Java中,如何将列表(比如ArrayList)转换为ConcurrentSet 我知道这个答案: 但我似乎无法让它在ConcurrentSet上工作。您可以这样进行转换 public static <E> Set<E> toConcurrentSet(Collection<E> coll) { Set<E> set = Collections.newSetFromMap(new ConcurrentHashMap<>());

在Java中,如何将列表(比如ArrayList)转换为ConcurrentSet

我知道这个答案:
但我似乎无法让它在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))