2011-08-19 13 views
5

文字列のセットを文字列[]配列に変換するのに問題はありませんが、Set of Integerをint []配列に変換する際に問題があります。 整数をプリミティブに変換するにはどうすればよいですか?Set of Integers from int [] array

関連する質問はありません。助けることができる簡単な提案はありますか?

アレイの場合のように、自動ボクシングを使用できないことがあります。私は整数の配列が自動的にintの配列に変換されるとは思わない。あなたは

Integer.intValue(); 

関数を呼び出すことができます

+2

'toArray(T []) 'では使用できません。自分でループして、自動ボクシングを仕事にさせてください。 – BalusC

+0

なぜint型が必要ですか? 'Integer'がうまくいかないという特別な理由はありますか? – Nivas

答えて

0

...

レムあなたは:)

+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

何らかの理由で、各ループのforでIntegerの要素の型を許さない。 –

+1

はその後、それは '' を設定し、 ''しかしSet'または 'を設定し、ではありません。 – BalusC

0

Java 5+を使用している場合、自動ボクシングではこれを処理する必要があります...!

どのようなエラーが表示されますか?

編集:[OK]を私は見..

他が言ったように:[]あなたの設定に

ループを、ちょうどint型の内側に整数を入れ、オートボクシングはそれを変換する必要があります。

1

Set<Integer>.toArrayint[]ではなくInteger[]に変換されていると思います。したがって、単純な方法はありません。手動でセット全体を反復し、その要素をint配列に追加する必要があります。個々のIntegerintに変換することは、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();