如何将 Java HashSet<Integer> 转换为原始 int 数组?

新手上路,请多包涵

我有一个 HashSet<Integer> 有一堆 Integers 。我想把它变成一个数组,但是调用

hashset.toArray();

返回 Object[] 。除了手动遍历每个元素之外,是否有更好的方法将其转换为 int 的数组?我想将数组传递给

void doSomething(int[] arr)

它不会接受 Object[] 数组,即使我尝试像

doSomething((int[]) hashSet.toArray());

原文由 jackbot 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

Apache 的 ArrayUtils 有这个(它仍然 在幕后 迭代):

 doSomething(ArrayUtils.toPrimitive(hashset.toArray()));

他们总是检查此类事情的好地方。

原文由 Matthew Flaschen 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 Java 8 流从任何 Collection<Integer> (包括 HashSet<Integer> )创建一个 int[]

 int[] array = coll.stream().mapToInt(Number::intValue).toArray();

当然,图书馆仍在代表您迭代集合(或其他流源)。

除了简洁和没有外部库依赖性之外,如果您要复制非常大的集合,流还可以让您并行进行。

原文由 Jeffrey Bosboom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题