【问题标题】:Converting from HashSet<String> to String[]从 HashSet<String> 转换为 String[]
【发布时间】:2011-07-25 09:12:33
【问题描述】:

HashSet&lt;String&gt; 转换为String[] 的最佳方法是什么?

【问题讨论】:

  • 请记住 HashSet 没有保证顺序,因此您不会知道数组的顺序。

标签: java arrays hashset


【解决方案1】:

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

这允许绕过数组表示法([])。

【讨论】:

    【解决方案2】:

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

    set.toArray(new String[0]); 
    

    【讨论】:

      【解决方案3】:
      set.toArray(new String[set.size()]);
      

      【讨论】:

      • 这是最好的方法(+1)
      • 我会使用 set.toArray(new String[0]);甚至 set.toArray(EMPTY_STRING_ARRAY); set.size() 不会增加任何性能优势,但会占用读者的心理空间。
      • 在 java 12 中也可以使用 set.toArray(new String[]{});。我的 IDE IntelliJ 说“在较旧的 Java 版本中,建议使用预先确定大小的数组,因为反射调用是创建适当大小的数组非常慢。但是,由于 OpenJDK 6 的更新较晚,这个调用被内化了,使得空数组版本的性能与预调整大小的版本相同,有时甚至更好。同时传递预调整大小的数组是对并发或同步集合很危险”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多