【发布时间】:2011-07-25 09:12:33
【问题描述】:
将HashSet<String> 转换为String[] 的最佳方法是什么?
【问题讨论】:
-
请记住
HashSet没有保证顺序,因此您不会知道数组的顺序。
将HashSet<String> 转换为String[] 的最佳方法是什么?
【问题讨论】:
HashSet 没有保证顺序,因此您不会知道数组的顺序。
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
这允许绕过数组表示法([])。
【讨论】:
JB Nizet 的答案是正确的。在 Java 15 中,更好的答案是:
set.toArray(new String[0]);
【讨论】:
set.toArray(new String[set.size()]);
【讨论】:
set.toArray(new String[]{});。我的 IDE IntelliJ 说“在较旧的 Java 版本中,建议使用预先确定大小的数组,因为反射调用是创建适当大小的数组非常慢。但是,由于 OpenJDK 6 的更新较晚,这个调用被内化了,使得空数组版本的性能与预调整大小的版本相同,有时甚至更好。同时传递预调整大小的数组是对并发或同步集合很危险”。