2011-08-19 12 views
5

Non ho problemi a convertire un Set di Stringhe in un array stringa [], ma sto riscontrando problemi nel convertire un Set di Integer in un array int []. Come posso convertire gli interi alla sua primitiva?Problemi nella conversione di Set di numeri interi nell'int [] array

Non riesco a trovare alcuna domanda correlata. Qualche suggerimento veloce che può aiutare?

A volte non è possibile utilizzare la funzione di autoboxing, come nel caso degli array. Non penso che una serie di numeri interi verrà automaticamente convertita in una matrice di interi.

+2

Non possibile con 'toArray (T [])'. Guardalo da solo e lascia che il box automatico faccia il suo lavoro. – BalusC

+0

Perché vuoi un 'int'? Qualche specifico motivo per cui 'Integer' non è ok? – Nivas

risposta

0

è possibile chiamare la funzione

Integer.intValue(); 

...

fammi sapere più specifiche su ciò che occorre :)

+0

Grazie Piyush. Mi piacerebbe usare questa funzione. –

+1

balus capito, amico! Si prega di accettare la risposta se ti è piaciuto :) – MozenRath

14

string[] non esiste, penso che si intende String[].

Per convertire un Set<Integer> in int[], è necessario eseguire iterazioni sul set manualmente.

Ti piace questa:

Set<Integer> set = ...; 

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

int index = 0; 

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

Si noti che gli insiemi non hanno alcun ordine particolare, se l'ordine è importante, avresti bisogno di utilizzare un SortedSet.

+1

sì lol. questo è quello che intendevo Thomas. scusa errore di battitura. Grazie comunque. –

+0

Per qualche motivo non consente che il tipo di elemento sia di numero intero in ogni ciclo. –

+1

Quindi non è un 'Set 'ma un' Set' o 'Set '. – BalusC

0

Se si utilizza Java 5+ Autoboxing dovrebbe occuparsi di questo ...!

Che errore ottieni?

edit: ok vedo ..

Come altro ha detto:

ciclo sul set e appena messo l'intero all'interno del int [], autoboxing dovrebbe convertirlo.

1

Immagino che il problema sia che Set<Integer>.toArray viene convertito in Integer[] anziché in int[]. Quindi non hai un modo semplice: devi scorrere l'insieme manualmente e aggiungere i suoi elementi all'array int. La conversione di una persona da a int viene gestita da autoboxing in Java 5 e versioni successive.

0

Questo dovrebbe funzionare, presupponendo l'unboxing automatico!

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

Chiunque lo stia utilizzando mentre utilizza Java 8+ può utilizzare gli stream.

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