2012-04-27 25 views
9

He siguiente código Java,Java matriz a la lista de Emisión

int a[] = new int[] {20, 30} ; 
List lis = Arrays.asList(a) ; 
System.out.print(lis.contains(20)); 

Sin embargo, la salida es falso. ¿Alguien puede ayudarme, por qué esto no está dando verdad?

Respuesta

13

Lo que obtienes no es una lista de enteros, sino una lista de matrices de enteros, es decir, List<int[]>. No puede crear colecciones (como List) de tipos primitivos.

En su caso, el lis.contains(20) creará un objeto Integer con el valor 20 y lo comparará con la matriz int, que claramente no es igual.

trate de cambiar el tipo de la matriz a Integer y debería funcionar:

Integer a[] = new Integer[] {20, 30} ; 
List lis = Arrays.asList(a) ; 
System.out.print(lis.contains(20)); 
+0

Damn my slow typing! (+1) –

+2

La trampa de varargs ... – Luciano

+0

Muchas gracias. ¿Hay alguna otra forma de resolver esto? Significa convertir matriz en tal modo puede utilizar el método contiene y eliminar? – Arpssss

1

El asList método estático utiliza como parámetro varargs: .... Solo requiriendo <Integer> previene un List<Object> donde a es un Objeto.

int[] a = new int[] {20, 30} ; 
List<Integer> lis = Arrays.asList(a) ; 
System.out.print(lis.contains(20));