C贸mo convertir una matriz de Java a ArrayList

    Introducci贸n

    En este tutorial, convertiremos una matriz en una ArrayList m谩s vers谩til en Java.

    • Arrays.asList ()
    • new ArrayList <> (Arrays.asList ()) (enfoque m谩s popular y utilizado)
    • new ArrayList <> (List.of ())
    • Colecciones.addAll ()
    • Collectors.toList ()
    • Collectors.toCollection ()
    • Lists.newArrayList ()

    Las matrices son simples y proporcionan la funcionalidad b谩sica de agrupar una colecci贸n de objetos o tipos de datos primitivos. Sin embargo, las matrices tambi茅n son limitadas: su tama帽o es fijo e incluso las operaciones b谩sicas como agregar nuevos elementos al principio o reorganizar elementos pueden complicarse.

    Afortunadamente, el marco de colecciones nos present贸 muchas implementaciones muy 煤tiles de Lists, Sets, y Queues.

    Uno de estos es el ArrayList, una implementaci贸n muy vers谩til y popular de un List.

    Un ArrayListEl constructor aceptar谩 cualquier Collection. Podemos ser creativos con el tipo de colecci贸n que le pasamos.

    Arrays.asList ()

    Comencemos con la forma m谩s simple de conversi贸n. los Arrays helper class tiene muchos m茅todos 煤tiles. los asList() m茅todo devuelve el contenido de la matriz en un List:

    Employee emp1 = new Employee("John");
    Employee emp2 = new Employee("Sarah");
    Employee emp3 = new Employee("Lily");
    
    Employee[] array = new Employee[]{emp1, emp2, emp3};
    
    List<Employee> list = Arrays.asList(array);
    System.out.println(list);
    

    Esto resultar谩 en una List implementaci贸n (ArrayList) para ser poblado con emp1, emp2 y emp3. Ejecutar este c贸digo da como resultado:

    [Employee{name="John"}, Employee{name="Sarah"}, Employee{name="Lily"}]
    

    new ArrayList <> (Arrays.asList ())

    Un enfoque mejor que simplemente asignar el valor de retorno del m茅todo auxiliar es pasar el valor de retorno a un new ArrayList<>(). Esta es el enfoque est谩ndar utilizado por la mayor铆a de las personas.

    Esto es porque el asList() El m茅todo est谩 respaldado por la matriz original.

    Si cambia la matriz original, la lista tambi茅n cambiar谩. Tambi茅n, asList() devuelve un tama帽o fijo, ya que est谩 respaldado por la matriz fija. Las operaciones que ampliar铆an o reducir铆an la lista devolver铆an un UnsupportedOperationException.

    Para evitarlos, aplicaremos las caracter铆sticas de un ArrayList pasando el valor devuelto de asList() al constructor:

    Employee[] array = new Employee[]{emp1, emp2, emp3};
    
    List<Employee> list = new ArrayList<>(Arrays.asList(array));
    System.out.println(list);
    

    Esto resulta en:

    [Employee{name="John"}, Employee{name="Sarah"}, Employee{name="Lily"}]
    

    new ArrayList <> (List.of ())

    Desde Java 9, puede omitir la inicializaci贸n de una matriz y pasarla al constructor. Puedes usar List.of() y pasar elementos individuales:

    List<Employee> list = new ArrayList<>(List.of(emp1, emp2, emp3));
    System.out.println(list);
    

    Esto resulta en:

    [Employee{name="John"}, Employee{name="Sarah"}, Employee{name="Lily"}]
    

    Colecciones.addAll ()

    los Collections ofrece una mir铆ada de m茅todos de ayuda 煤tiles y entre ellos se encuentra el addAll() m茅todo. Acepta un Collection y un vararg de elements y los une.

    Es muy vers谩til y se puede usar con muchos sabores de colecci贸n / vararg. Estamos usando un ArrayList y una matriz:

    Employee[] array = new Employee[]{emp1, emp2, emp3};
    List<Employee> list = new ArrayList<>();
    
    Collections.addAll(list, array);
    System.out.println(list);
    

    Esto resulta en:

    [Employee{name="John"}, Employee{name="Sarah"}, Employee{name="Lily"}]
    

    Collectors.toList ()

    Si est谩 trabajando con transmisiones, en lugar de colecciones regulares, puede recopilar los elementos de la transmisi贸n y empaquetarlos en una lista a trav茅s de toList():

    Employee[] array = new Employee[]{emp1, emp2, emp3};
    List<Employee> list = Stream.of(array).collect(Collectors.toList());
    System.out.println(list);
    

    Ejecutar esto producir谩:

    [Employee{name="John"}, Employee{name="Sarah"}, Employee{name="Lily"}]
    

    Collectors.toCollection ()

    Del mismo modo, puede utilizar el toCollection() m茅todo para recopilar corrientes en diferentes colecciones. En nuestro caso, proporcionaremos el ArrayList::new referencia de m茅todo en 茅l, aunque tambi茅n puede proporcionar otras referencias:

    Employee[] array = new Employee[]{emp1, emp2, emp3};
    List<Employee> list =  Stream.of(array)
            .collect(Collectors.toCollection(ArrayList::new));
    System.out.println(list);
    

    Esto tambi茅n resulta en:

    [Employee{name="John"}, Employee{name="Sarah"}, Employee{name="Lily"}]
    

    Lists.newArrayList ()

    Similar a Arrays.asList() clase y m茅todo de ayuda, de Google Guayaba proyecto nos introdujo a la Lists clase de ayudante. los Lists la clase auxiliar proporciona el newArrayList() m茅todo:

    Employee[] array = new Employee[]{emp1, emp2, emp3};
    List<Employee> list = Lists.newArrayList(array);
    

    Ahora, el punto clave de este enfoque fue que no es necesario especificar el tipo al inicializar un ArrayList. Esto fue realmente 煤til cuando ten铆as un <Element <Element, Element>> lista.

    Sin embargo, como Java 7 elimin贸 la necesidad de establecer expl铆citamente el tipo en el operador de diamante, esto se volvi贸 obsoleto.

    Conclusi贸n

    Hay numerosas formas de convertir una matriz en una ArrayList en Java. Estos abarcan desde llamar a m茅todos auxiliares hasta transmitir la matriz y recopilar los elementos.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *