Prefacio:
Este artículo presenta la comparación de las ventajas y desventajas de las tres situaciones de conversión de matrices en la lista en Java, así como la comparación de escenarios de aplicación, y el análisis de las causas de los errores de conversión de tipo que a menudo realizan los programadores.
1. La forma más común (no necesariamente la mejor)
Después de convertir la matriz en la lista a través de Arrays.asList(strArray) . Solo puede verificarlo y modificarlo, de lo contrario, se lanzará una excepción.
Código clave: List list = Arrays.asList(strArray);
privado vacío testArraycastTolisterRor () {String [] Strarray = new String [2]; List list = arrays.aslist (Strarray); // inserta un datos en la lista convertida list.add ("1"); System.out.println (lista); }Resultados de la ejecución:
Excepción en el hilo "principal" java.lang.unsupportedoperationException
en java.util.abstractlist.add (abstractList.java:148)
en java.util.abstractlist.add (abstractList.java:108)
en com.darwin.junit.calculator.testarraycasttolist (calculator.java:19)
en com.darwin.junit.calculator.main (calculator.java:44)
El programa lanza una excepción en list.add(“1”) . Exportación de operación.
Análisis de la razón:
El java.util.Arrays.ArrayList java.util.ArrayList retorno de java.util.Arrays Arrays.asList(strArray) java.util.Arrays.ArrayList tiene set() , get() , contains() y otros métodos, pero no tiene el método de add add() o eliminar remove() , por lo que llamar add() causará un error.
Escenario de uso: el método de Arrays.asList(strArray) solo se puede usar después de convertir una matriz en una lista. No es necesario agregar o eliminar los valores en él, y solo se usa como fuente de datos para leer.
2. Después de convertirse en la lista, admite el método de agregar, eliminar, modificar y buscar.
java.util.ArrayList través del constructor ArrayList, convierta el valor de retorno de java.util.Arrays.ArrayList Arrays.asList(strArray) .
Código clave: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
privado vacío testArraycastTolistright () {String [] Strarray = new String [2]; ArrayList <String> list = new ArrayList <String> (Arrays.aslist (Strarray)); list.add ("1"); System.out.println (lista); }Resultado de la ejecución: se agregó con éxito un elemento "1".
[NULL, NULL, 1]
Escenario de uso: después de convertir la matriz en una lista, debe agregar, eliminar, modificar y verificar la lista. Se puede usar si la cantidad de datos en la lista no es grande.
3. A través de la clase de la herramienta de recolección, el método deaddall () (más eficiente)
Convertir a través de Collections.addAll(arrayList, strArray) , cree una lista de la misma longitud de acuerdo con la longitud de la matriz, y luego convierta los elementos en la matriz en binario a través Collections.addAll() , y luego agréguelo a la lista. Este es el método más eficiente.
Código clave:
ArrayList <String> ArrayList = new ArrayList <String> (Strarray.Length); Collections.Addall (ArrayList, Strarray);
prueba:
Private void testArraycastTolistEftient () {String [] Strarray = new String [2]; ArrayList <String> ArrayList = new ArrayList <String> (Strarray.Length); Colección.addall (ArrayList, StrraRray); ArrayList.Add ("1"); System.out.println (ArrayList); }Resultado de la ejecución: también agregó con éxito un elemento "1".
[NULL, NULL, 1]
Escenario de uso: después de convertir la matriz en una lista, debe agregar, eliminar, modificar y verificar la lista. Cuando el volumen de datos de la lista es enorme, se prefiere usarlo, lo que puede mejorar la velocidad de operación.
Nota: Adjunte el código fuente del método Collections.addAll() :
public static <t> boolean addall (colección <? Super t> c, t ... elementos) {resultado boolean = false; para (elemento t: elementos) resultado | = c.add (elemento); // resultado y c.add (elemento) bitwise u operación, y luego asigne el valor para dar como resultado el resultado de retorno; }Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.