我有一个里面有一堆Integers
的HashSet<Integer>
。我想把它变成一个数组,但是调用
hashset.toArray();
返回Object[]
。除了手动遍历每个元素之外,还有更好的方法将其转换为int
数组吗?我想将数组传递给
void doSomething(int[] arr)
它不会接受Object[]数组,即使我尝试将它转换为
doSomething((int[]) hashSet.toArray());
发布于 2010-03-16 07:36:25
阿帕奇的ArrayUtils有这个(它仍然迭代behind the scenes):
doSomething(ArrayUtils.toPrimitive(hashset.toArray()));
它们总是检查这类事情的好地方。
发布于 2016-03-20 10:23:39
您可以使用Java8 streams从任何Collection<Integer>
(包括HashSet<Integer>
)创建int[]
:
int[] array = coll.stream().mapToInt(Number::intValue).toArray();
当然,该库仍在代表您迭代集合(或其他流源)。
除了简洁和没有外部库依赖之外,如果你有一个非常大的集合要复制,streams还可以让你并行。
发布于 2010-03-16 07:33:59
public int[] toInt(Set<Integer> set) {
int[] a = new int[set.size()];
int i = 0;
for (Integer val : set) a[i++] = val;
return a;
}
既然我已经为你写好了代码,它就不再是手册了,不是吗?;)
https://stackoverflow.com/questions/2451184
复制相似问题