Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=8fb85e14-8892-45fe-b8f1-ff24fd6a9366

3 formas de inicializar colecciones Java a la hora de declararlas


Foto por Aaron Burden en Unsplash

En muchos lenguajes, al definir una colección como un array o una lista podemos asignarle una sucesión de valores de forma que los contenga como elementos. En Java, podemos hacer esto con arrays básicos:

int[] miArray = new int[] {3, 1, 4};

Sin embargo, a la hora de inicializar una colección de objetos de una clase, la misma sintaxis no es aplicable. En su lugar, habitualmente debemos recurrir a los métodos que añaden elementos, como add en el caso de las clases con interfaz List:

List<Integer> miLista = new ArrayList<Integer>();
miLista.add(3);
miLista.add(1);
miLista.add(4);

En este post te enseño tres vías para conseguir introducir los elementos en la colección en menos código y con mayor legibilidad.

Métodos de utilidades

Una de las estrategias posibles para hacer más compacto este código es usar el método asList de la clase Arrays de herramientas para manipulación de vectores. Se trata de una solución muy simple que reduciría el código a la siguiente línea:

List<Integer> miLista = Arrays.asList(3, 1, 4);

Un detalle a tener en cuenta es que este método construye una lista de tamaño fijo, por lo que no se podrá ampliar. Para contar con esa posibilidad debemos realizar la conversión a una clase que implemente List:

List<Integer> miLista = new ArrayList<Integer>(Arrays.asList(3, 1, 4));

Inicialización de doble llave

Otra posibilidad es aprovechar un patrón de sintaxis conocida como la inicialización de doble llave. Esta consiste en abrir una llave que crea una subclase anónima, y una segunda llave que comienza un inicializador de instancia. Dentro de este inicializador podemos recurrir a los métodos del objeto que estamos definiendo de la siguiente forma:

List<Integer> miLista = new ArrayList<Integer>() {{ add(3); add(1); add(4); }};

Esta sintaxis es sorprendente y muy versátil, ya que no sólo se reduce a la funcionalidad de añadir elementos sino que se puede utilizar para realizar otras tareas de inicialización, como la definición de componentes de una interfaz de usuario. A pesar de esto, en muchos casos no es recomendada ya que la creación de una subclase anónima puede conllevar cierta sobrecarga.

Métodos factoría de Java 9

Una tercera opción que se ha introducido en Java 9 es el uso de métodos factoría ya incluidos en el lenguaje. Las interfaces List, Set y Map proporcionan un método of que nos permite hacer justo lo que necesitamos: especificar varios elementos a la hora de declarar una colección. El siguiente es un ejemplo de su uso:

List<Integer> miLista = List.of(3, 1, 4);

Esta opción no es totalmente equivalente a las anteriores ya que el método of construye colecciones inmutables. Para permitir modificar y añadir elementos, tendríamos que recurrir al constructor de la colección que deseemos:

List<Integer> miLista = new ArrayList<Integer>(List.of(3, 1, 4));

Espero que estos trucos te sean útiles para manejar pequeñas colecciones más fácilmente en Java.

Fuentes y más información:

David Charte David Charte es un ingeniero informático y matemático apasionado por la divulgación del conocimiento. Cuando no está tratando de aprender un nuevo lenguaje, investiga en el campo de la ciencia de datos. Puedes seguirlo en Twitter en @fdavidcl. Ver todos los posts de David Charte
Archivado en: Lenguajes y plataformas

¿Te ha gustado este post?
Pues espera a ver nuestra newsletter...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.