inicialización de la lista Java en una línea
Overview
en este tutorial rápido, investigaremos cómo inicializar una lista usando una sola línea.
leer Más:
Colecciones.emptyList () vs.New List Instance
Guía para la Java ArrayList
Crear a partir De una Matriz
podemos crear una Lista a partir de una matriz. Y gracias a los literales del array, podemos inicializarlos en una línea:
podemos confiar en el mecanismo varargs para manejar la creación del array. Con eso, podemos escribir código más conciso y legible:
la instancia de resultado de este código implementa la interfaz de Lista, pero no es java.útil.,ArrayList o una lista de enlaces. En su lugar, es una lista respaldada por la matriz original, que tiene dos implicaciones que veremos en el resto de esta sección.
aunque el nombre de la clase pasa a ser ArrayList, está en java.útil.Paquete Arrays.
2.1. Tamaño fijo
la instancia de resultado de los Arrays.asList tendrá un tamaño fijo:
2.2. Referencia compartida
el array original y la lista comparten las mismas referencias a los objetos:
crear a partir de un Stream (Java 8)
podemos convertir fácilmente un Stream en cualquier tipo de colección.,
Por lo tanto, con los métodos de fábrica para flujos, podemos crear e inicializar listas en una línea:
debemos tener en cuenta aquí que los colectores.toList () no garantiza la implementación exacta de la lista devuelta.
no existe ningún contrato general sobre la mutabilidad, serialización o seguridad del hilo de la instancia devuelta. Por lo tanto, nuestro código no debería depender de ninguna de estas propiedades.
algunas fuentes resaltan esa secuencia.de(…).collect (…) puede tener una huella de memoria y rendimiento más grande que las matrices.asList ()., Pero en casi todos los casos, es un micro-optimización que hay poca diferencia.
Métodos de fábrica (Java 9)
JDK 9 introduce varios métodos de fábrica convenientes para las colecciones:
un detalle importante es que las instancias devueltas son inmutables. Más allá de eso, los métodos de fábrica tienen varias ventajas en la eficiencia del espacio y la seguridad del hilo.
Este tema se explora más en este artículo.,
inicialización de doble corsé
en varios lugares, podemos encontrar un método llamado inicialización de doble corsé, que se parece a esto:
el nombre «inicialización de doble corsé» es bastante engañoso. Si bien la sintaxis puede parecer compacta y elegante, oculta peligrosamente lo que está sucediendo debajo del capó.
en realidad no hay un elemento de sintaxis de doble llave en Java; esos son dos bloques formateados intencionalmente de esta manera.
con las llaves externas, declaramos una clase interna anónima que será una subclase de la ArrayList., Podemos declarar los detalles de nuestra subclase dentro de estas llaves.
como de costumbre, podemos usar bloques inicializadores de instancias, y de ahí viene el par de llaves internas.
La brevedad de esta sintaxis es tentador. Sin embargo, se considera un anti-patrón.
para leer más sobre la inicialización de doble llave, eche un vistazo a nuestro artículo aquí.
conclusión
Java moderno ofrece varias opciones para crear una colección en una línea. El método que elegimos se debe casi por completo a la preferencia personal en lugar de al razonamiento técnico.,
una conclusión importante es que, aunque se ve elegante, el anti-patrón de inicialización de clase interna anónima (también conocido como doble apoyo) tiene muchos efectos secundarios negativos.
Como siempre, el código está disponible en GitHub.
empezar con el Muelle 5 y el Resorte de Arranque 2, a través del aprendizaje del curso Primavera:
>> COMPRUEBE EL CURSO