首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将Java数组转换为原始的HashSet<Integer>数组?

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

Stack Overflow用户
提问于 2010-03-16 07:27:01
回答 8查看 72.3K关注 0票数 37

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

代码语言:javascript
复制
hashset.toArray();

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

代码语言:javascript
复制
void doSomething(int[] arr)

它不会接受Object[]数组,即使我尝试将它转换为

代码语言:javascript
复制
doSomething((int[]) hashSet.toArray());
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-16 07:36:25

阿帕奇的ArrayUtils有这个(它仍然迭代behind the scenes):

代码语言:javascript
复制
doSomething(ArrayUtils.toPrimitive(hashset.toArray()));

它们总是检查这类事情的好地方。

票数 22
EN

Stack Overflow用户

发布于 2016-03-20 10:23:39

您可以使用Java8 streams从任何Collection<Integer> (包括HashSet<Integer>)创建int[]

代码语言:javascript
复制
int[] array = coll.stream().mapToInt(Number::intValue).toArray();

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

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

票数 31
EN

Stack Overflow用户

发布于 2010-03-16 07:33:59

代码语言:javascript
复制
public int[] toInt(Set<Integer> set) {
  int[] a = new int[set.size()];
  int i = 0;
  for (Integer val : set) a[i++] = val;
  return a;
}

既然我已经为你写好了代码,它就不再是手册了,不是吗?;)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2451184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档