2011-08-19 23 views
5

No tengo problemas para convertir un conjunto de cadenas en una matriz de cadena [], pero tengo problemas para convertir un conjunto de enteros en una matriz int []. ¿Cómo puedo convertir los enteros a su primitiva?Problemas para convertir el conjunto de enteros a int [] array

Parece que no puedo encontrar ninguna pregunta relacionada. ¿Alguna sugerencia rápida que pueda ayudar?

A veces, el autoboxing no se puede utilizar, como en el caso de las matrices. No creo que una matriz de enteros se convierta automáticamente en una matriz de entradas.

+2

No es posible con 'toArray (T [])'. Recórralo solo y deja que el autoboxing haga su trabajo. – BalusC

+0

¿Por qué quieres un 'int'? ¿Alguna razón específica por la cual 'Integer' no está bien? – Nivas

Respuesta

0

puede llamar a la función

Integer.intValue(); 

...

déjame saber más detalles de lo que usted necesita :)

+0

Gracias Piyush. Voy a usar esta función. –

+1

balus tiene razón compañero! Por favor, acepte la respuesta si le gustó :) – MozenRath

14

string[] no existe, supongo que quiere decir String[].

Para convertir un Set<Integer> en int[], tendría que iterar manualmente sobre el conjunto.

De esta manera:

Set<Integer> set = ...; 

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

int index = 0; 

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

Tenga en cuenta que los conjuntos no tienen ningún orden en particular, si el orden es importante, que había necesidad de utilizar un SortedSet.

+1

sí lol. eso es lo que quise decir, Thomas. lo siento error de tipeo. Gracias de cualquier forma. –

+0

Por alguna razón, no permite que el tipo de elemento sea de Entero en cada bucle. –

+1

Entonces no es un 'Set ' sino un 'Set' o' Set '. – BalusC

0

Si usa Java 5+ Autoboxing debería encargarse de esto ...!

¿Qué error obtienes?

edición: bien veo ..

Al igual que otro dijo:

bucle en su conjunto y sólo hay que poner el entero dentro de la int [], autoboxing debe convertirlo.

1

Supongo que el problema es que Set<Integer>.toArray se convierte en Integer[], en lugar de int[]. De modo que no tiene una forma simple: necesita recorrer el conjunto manualmente y agregar sus elementos a la matriz int. La conversión de un individuo Integer a int se maneja mediante autoboxing en Java 5 y superior.

0

¡Esto debería funcionar, asumiendo el auto unboxing!

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

Cualquier persona que experimente esto mientras usa Java 8+ puede usar streams.

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