2011-08-19 81 views
5

将字符串集转换为字符串[]数组没有问题,但是我在将整数集转换为int []数组时遇到问题。 如何将整数转换为其原始值?将整数集转换为int的问题[]数组

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

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

+2

不可能使用'toArray(T [])'。只需自行循环,让自动装箱就能完成它的工作。 – BalusC

+0

你为什么要'int'? “整数”不正确的任何具体原因? – Nivas

回答

0

可以拨打

Integer.intValue(); 

功能...

还是让我知道你需要什么:)

+0

谢谢Piyush。我有一个去使用这个功能。 –

+1

balus得到了正确的队友!请接受答案,如果你喜欢它:) – MozenRath

14

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

是的大声笑。那是我的意思托马斯。抱歉错字错误。谢谢你。 –

+0

由于某种原因,它不允许每个循环中的元素类型都是整数。 –

+1

然后它不是'Set ',而是'Set'或'Set '。 – BalusC

0

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

你会得到什么错误?

编辑:确定我看到..

像其他的说:你的设置

循环,只是把整数INT []内,自动装箱应该转换。

1

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

0

这应该工作,假设自动拆箱!

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

使用Java 8+时遇到此问题的任何人都可以使用流。

int[] array = set.keySet().stream().mapToInt(i -> i).toArray();