CodeGym /Blog Java /Random-ES /Método Arrays.asList() en Java
Autor
Volodymyr Portianko
Java Engineer at Playtika

Método Arrays.asList() en Java

Publicado en el grupo Random-ES
Muchos principiantes confunden el concepto del método Arrays.asList() con la estructura de datos ArrayList. Aunque pueden parecer y sonar similares, estos dos son totalmente diferentes en lo que respecta a la implementación. En esta publicación, cubriremos el uso básico del método Arrays.asList() y eliminaremos algunas confusiones prevalecientes relacionadas con él.

¿Por qué se usa Arrays.asList()?

Si tiene un Array que necesita convertir en una lista, java.util.Arrays proporciona un contenedor Arrays.asList() para este propósito. En palabras simples, este método toma una matriz como parámetro y devuelve una lista. La mayor parte de la API de la plataforma Java se desarrolló antes de que se introdujera el marco de las colecciones. Entonces, de vez en cuando, es posible que deba traducir entre arreglos tradicionales y colecciones más modernas. Esta función sirve como enlace entre las colecciones y las API basadas en matrices.Método Arrays.asList() en Java - 1

Ejemplo

Echa un vistazo al siguiente ejemplo:

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);
		
	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
Producción:
Lista: [Amanda, Loren, Keith] HashSet: [Keith, Loren, Amanda] // HashSet no mantiene el orden

¿En qué se diferencian Arrays.asList() y ArrayList?

Cuando llama al método Arrays.asList() en una matriz, el objeto devuelto no es una ArrayList (una implementación de matriz de tamaño variable de la interfaz List ). Es un objeto de vista con los métodos get() y set() que acceden a la matriz subyacente. Todos los métodos que cambiarían el tamaño de la matriz, como add() o remove() del iterador asociado, generan una UnsupportedOperationException . La razón por la que el programa java se compila correctamente pero da una Excepción de tiempo de ejecución es que, aparentemente, se devuelve una "Lista" como resultado deArreglos.asList() . Donde todas las operaciones de adición/eliminación están permitidas. Pero dado que la estructura de datos subyacente es una "matriz" no redimensionable , se lanza una excepción en el tiempo de ejecución. Aquí hay un fragmento que muestra cómo se ve:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];	
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);
	
	// using getters and setters to randomly access the list	
	diceRollList.set(5, 6);	
	diceRollList.set(0, 1);	
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);
	
	diceRollList.add(7); // Add a new Integer to the list
    }
}
Producción:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Excepción en el subproceso "principal" java.lang.UnsupportedOperationException en java.util.AbstractList.add(AbstractList. java:148) en java.util.AbstractList.add(AbstractList.java:108) en ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Ejemplos para usar el método asList()

A partir de Java SE 5.0, se declara que el método asList() tiene un número variable de argumentos. En lugar de pasar una matriz, también puede pasar elementos individuales. Por ejemplo:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
Producción:
[invierno, verano, primavera, otoño] [1, 3, 5, 7, 9]

Conclusión

Para usar Arrays.asList(), debe tener en cuenta que es solo un método contenedor para su propia utilidad. No lo mezcles con ArrayList y ten en cuenta que devuelve una “lista”. Inicialmente, es posible que obtenga errores al realizar funciones de suma/eliminación, pero todo desaparece con la práctica y la comprensión constantes. ¡Así que acceda a su IDE y tenga una gran experiencia de aprendizaje!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION