2011-08-19 73 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();