从HashSet<String>转换为String[]

41

如何将 HashSet<String> 转换为 String[]


请记住,HashSet 不保证元素的顺序,因此您无法确定数组的顺序。 - MCMastery
3个回答

104
set.toArray(new String[set.size()]);

4
这是做这件事情的最佳方式。 (+1) - Sean Patrick Floyd
1
我会使用 set.toArray(new String[0]); 或者 set.toArray(EMPTY_STRING_ARRAY); set.size() 不会增加任何性能优势,但会占用读者的心理空间。 - Roel Spilker
在Java 12中也可以执行set.toArray(new String[]{});。我的IDE IntelliJ说:“在早期的Java版本中,推荐使用预定义大小的数组,因为必须使用反射调用来创建适当大小的数组,这种调用非常缓慢。然而,自从OpenJDK 6的最新更新以来,该调用已被内部化,使得空数组版本的性能与预定义大小版本相同,有时甚至更好。此外,传递预定义大小的数组对于并发或同步集合是危险的”。 - LuminousNutria

5

JB Nizet的答案是正确的,但是如果你想将它转换为类似CSV的字符串,使用Java 8,你可以这样做:

Set<String> mySet = new HashSet<>(Arrays.asList("a", "b", "c"));
System.out.println(String.join(", ", mySet));

Output is: a, b, c

这可以绕过数组记号([])。


0

JB Nizet的回答是正确的。在Java 15中,更好的答案是:

set.toArray(new String[0]); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接