将整数集转换为int []数组的问题

时间:2011-08-19 15:06:32

标签: java collections

我将一组字符串转换为string []数组没有问题,但我在将一组整数转换为一个int []数组时遇到了问题。 如何将整数转换为原语?

我似乎无法找到任何相关问题。任何可以提供帮助的快速建议?

有时,无法使用自动装箱,就像阵列一样。我不认为整数数组会自动转换为整数数组。

7 个答案:

答案 0 :(得分:15)

string[]不存在,我想你的意思是String[]

要将Set<Integer>转换为int[],您必须手动迭代该集合。

像这样:

Set<Integer> set = ...;

int[] arr = new int[set.size()];

int index = 0;

for( Integer i : set ) {
  arr[index++] = i; //note the autounboxing here
}

请注意,套装没有任何特定订单,如果订单很重要,则需要使用SortedSet

答案 1 :(得分:12)

这就是为什么Guava有一个Ints.toArray(Collection<Integer>)方法,返回int[]

答案 2 :(得分:2)

使用Java 8:

Set<Integer> set = new HashSet<>(); 
// TODO: Add implement for set

int[] array = set.stream().mapToInt(Integer::intValue).toArray();

答案 3 :(得分:1)

我想问题是Set<Integer>.toArray转换为Integer[],而不是int[]。所以你没有简单的方法:你需要手动迭代集合并将其元素添加到int数组中。将个人Integer转换为int由Java 5及更高版本中的自动装箱处理。

答案 4 :(得分:1)

这应该有效,假设自动取消装箱!

Set<Integer> myIntegers; // your set
int[] ints = new int[myIntegers.size()];
int index = 0;
for(Integer i : myIntegers){
    ints[index++] = i;
}

答案 5 :(得分:0)

你可以打电话给

Integer.intValue();

...功能

lemme了解您需要的更多细节:)

答案 6 :(得分:0)

如果你使用Java 5+ Autoboxing应该照顾这个......!

你得到什么错误?

编辑:好的,我看..

像其他人说的那样:

循环你的Set并将Integer放在int []中,autoboxing应该转换它。