Red de conocimiento informático - Material del sitio web - Cómo convertir una matriz a ArrayList en Java

Cómo convertir una matriz a ArrayList en Java

Este artículo analiza la respuesta a una de las preguntas más populares sobre Stack Overflow, en la que el interrogador obtiene muchos puntos de reputación, lo que le permite hacer mucho en Stack Overflow. Esto no tiene nada que ver conmigo, así que veamos eso primero.

La pregunta es "¿Cómo convertir una matriz a ArrayList en Java?"

1

Elemento[] matriz = {nuevo Elemento(1),nuevo Elemento (2),nuevo Elemento(3)};

1. La respuesta más popular y aceptada es:

1

ArrayList arrayList = new ArrayList<.Element>(Arrays.asList(array));

Primero, veamos la documentación del constructor ArrayList.

ArrayList(Collection c): construye una lista que contiene los elementos en un contenedor específico y la devuelve en el orden del iterador del contenedor.

Por lo tanto, el constructor hace lo siguiente:

1. Convertir el contenedor c en una matriz

2. Copiar la matriz en una ArrayList llamada "elementData " En la matriz

El código fuente del constructor ArrayList es el siguiente. El código fuente de ArrayList es el siguiente:

1234567

public ArrayList(Collection c) { elementData = c.toArray(); size = elementData.length; if (elementData .getClass() ! = Object[].class) elementData = Arrays.copyOf(elementData,size,Object[].class);}

2. p >Otra respuesta popular es:

1

List list = Arrays.asList(array);

Esta no es la mejor respuesta, porque el tamaño de la lista devuelto por asList() es fijo. De hecho, la lista devuelta no es java.util.ArrayList, sino una clase estática privada definida en java.util.Arrays. Sabemos que la implementación de ArrayList es esencialmente una matriz, y la lista devuelta por asList() es una lista de tamaño fijo respaldada por la matriz original.

1

list.add(new Element(4));

12

Excepción en el hilo "principal" java.lang .ClassCastException: java.util.Arrays$ArrayList no se puede convertir a java.util.ArrayList en collection.ConvertArray.java:22)

Otra solución

Esta solución es proporcionada por Otto

123

Elemento[] matriz = {nuevo Elemento(1), nueva Lista(2)}; );Collections.addAll(list,array);

4. Descripción del problema

Este problema no es difícil, pero es interesante. Todo programador de Java conoce ArrayList, pero es fácil cometer este error. Creo que es por eso que esta pregunta es tan popular. Si esta fuera una pregunta similar para una biblioteca Java de dominio específico, sería mucho menos popular.

Esta pregunta tiene muchas respuestas que ofrecen la misma solución, al igual que otras preguntas en StackOverflow. Supongo que cuando la gente quiere una respuesta a una pregunta, no les importa lo que digan los demás.