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

2022-09-01 01:26:22

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

hashset.toArray();

返回 .有没有更好的方法可以将其转换为数组,而不是手动迭代每个元素?我想将数组传递给Object[]int

void doSomething(int[] arr)

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

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

答案 1

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

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

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

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


答案 2

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

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

他们总是检查这样的事情的好地方。