java arrays generics arraylist

La lista de arrays de Java no puede encontrar el constructor, usando arrays.aslist



generics arraylist (3)

Sí. El autoboxing no se aplica a las matrices, solo a las primitivas.

El error que obtengo en eclipse es The constructor ArrayList<Integer>(List<int[]>) is undefined

Eso es porque el constructor en ArrayList se define como public ArrayList(Collection<? extends E> c) . Como puede ver, solo acepta un subtipo de Colección, que int no lo es.

Simplemente cambie su código a:

public class .... { public static void main(String[] args) { Integer[] primes = formPrimes(15); ArrayList<Integer> primes1 = new ArrayList<Integer>(Arrays.asList(primes)); // Rest of code... } public static Integer[] formPrimes(int n) { // Code that returns an array of integers } }

y todo debería estar bien, suponiendo que devuelva un conjunto de fromPrimes desde fromPrimes .

Actualización de los comentarios de Andrew, y luego de echar un vistazo al origen de Arrays.asList:

public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); }

Entonces, lo que realmente está sucediendo aquí es que Arrays.asList(new int[] {}) realidad devolverá una List<int[]> , a diferencia de Arrays.asList(new Integer[] {}) que devolvería una List<Integer> . Obviamente, el constructor ArrayList no aceptará una List<int[]> , y por lo tanto el compilador se queja.

Estoy usando el método Arrays.asList (). Contains () en mi código, como se muestra en la respuesta superior: ¿Cómo puedo probar si una matriz contiene un cierto valor? , entonces voy a usar Arrays.asList () en el código.

Sin embargo, el compilador rechaza este código siguiente. ¿Es por el uso de primitivas para mi matriz de primos, en lugar de un tipo de referencia? No lo creo, debido al autoboxing, pero solo quería comprobar.

import java.math.*; import java.util.ArrayList; import java.util.Arrays; public class .... { public static void main(String[] args) { int[] primes = formPrimes(15); ArrayList<Integer> primes1 = new ArrayList<Integer>(Arrays.asList(primes)); // Rest of code... } public static int[] formPrimes(int n) { // Code that returns an array of integers } }

Me sale un error, no puedo encontrar el error de símbolo.

símbolo: constructor ArrayList (java.util.List)

ubicación: clase java.util.ArrayList ArrayList primes1 = new ArrayList (Arrays.asList (primes));

Básicamente, tengo una función que devuelve una matriz de enteros, y quiero convertirla en una lista de arreglos, y estoy teniendo problemas con el uso del constructor ArrayList.


Si está haciendo esto para tener acceso al método contains, también puede escribir el suyo.

public boolean contains(int[] array, int item) { for (int element: array) if (element == item) return true; return false; }


primes es una matriz del tipo int primitivo; ese tipo no se deriva de Object y, por lo tanto, puede colocarse automáticamente en una List (que, como todas las Collections , solo puede contener Object s). @Justin tiene razón; necesita agregar manualmente los elementos de su matriz a la lista.