协慌网

登录 贡献 社区

如何在 Java 中将数组转换为 Set

我想将数组转换为 Java 中的 Set。有一些明显的方法可以做到这一点(例如,循环执行),但是我想要一些更整洁的东西,例如:

java.util.Arrays.asList(Object[] a);

有任何想法吗?

答案

像这样:

Set<T> mySet = new HashSet<>(Arrays.asList(someArray));

在 Java 9 + 中,如果设置不可修改,则可以:

Set<T> mySet = Set.of(someArray);

在 Java 10 + 中,可以从数组组件类型推断出泛型类型参数:

var mySet = Set.of(someArray);
Set<T> mySet = new HashSet<T>();
Collections.addAll(mySet, myArray);

那就是 JDK 6 中的 Collections.addAll(java.util.Collection,T ...)

另外:如果我们的数组充满了原语怎么办?

对于 JDK <8,我只需要编写明显的for循环就可以自动完成包装和添加设置。

对于 JDK> = 8,一个有吸引力的选择是这样的:

Arrays.stream(intArray).boxed().collect(Collectors.toSet());

使用番石榴,您可以:

T[] array = ...
Set<T> set = Sets.newHashSet(array);