En tutoriales anteriores aprendimos sobre la métodos de fábrica introducido en Java 9 para crear una lista inmutable y un conjunto inmutable. En esta guía aprenderemos cómo crear Map.Entry inmutable utilizando métodos de fábrica de Java 9.

1. Creando un mapa inmutable antes de Java 9

Antes de ver cómo crear un mapa inmutable utilizando los métodos de fábrica de Java 9, veamos cómo los creamos antes de Java 9.

1.1 Creando un mapa vacío antes de Java 9

Usamos el método unmodifiableMap () de la clase Colecciones para crear un mapa inmutable (inmutable).

Map<String,String> map = new HashMap<String, String>();
Map<String,String> immutableMap = Collections.unmodifiableMap(map);

Probemos esto en JShell.
Creando un mapa vacío antes de Java 9

1.2 Creando mapas no vacíos antes de Java 9

 
Map<String,String> map = new HashMap<String, String>();
map.put("Key1", "Jon");
map.put("Key2", "Steve");
map.put("Key3", "Mia");
map.put("Key4", "Lora");
Map<String,String> immutableMap = Collections.unmodifiableMap(map);

Probemos esto en JShell.
Métodos de Java 9 Factory para crear mapas inmutables

2. Métodos de Java 9 Factory para crear mapas inmutables

Hay un par de métodos útiles de fábrica introducidos en Java 9 para crear mapas inmutables. Tomaremos los mismos ejemplos que vimos anteriormente para comparar cómo las cosas se volvieron más fáciles en Java 9. Las líneas de código que teníamos que escribir antes de Java 9 se han reducido drásticamente con la ayuda de métodos de fábrica.

2.1 Java 9 – Mapa en blanco inmutable usando el método Factory Map.of ()

Método que usamos para el mapa en blanco:

static <K,V> Map<K,V> of()

Ejemplo:

Map<String,String> immutableMap = Map.of()

Prueba en JShell:

jshell> Map<String,String> immutableMap = Map.of()
immutableMap ==> {}

2.2 Java 9 – Mapa inmutable no vacío usando el método de fábrica Map.of (Clave, Valor….)

static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2...)

Ejemplo:

Para demostrar el uso del método de fábrica Map.of (), tomamos el mismo ejemplo que vimos anteriormente usando el método unmodifiableMap (). Como puede ver lo simple que es en Java 9. Hemos reducido las 6 líneas de código en una sola línea.

Map<String, String> immutableMap = 
Map.of("Key1", "Jon", "Key2", "Steve", "Key3", "Mia", "Key4", "Lora")

Prueba en JShell:

jshell> Map<String, String> immutableMap = 
Map.of("Key1", "Jon", "Key2", "Steve", "Key3", "Mia", "Key4", "Lora")
immutableMap ==> {Key3=Mia, Key4=Lora, Key1=Jon, Key2=Steve}

¿Qué es un mapa inmutable?

1. Immutable Map no permite la adición, eliminación y actualización de sus elementos. Si intenta realizar estas operaciones, el programa se iniciará UnsupportedOperationException.

jshell> Map<String, String> immutableMap = 
Map.of("Key1", "Jon", "Key2", "Steve", "Key3", "Mia", "Key4", "Lora")
immutableMap ==> {Key3=Mia, Key4=Lora, Key1=Jon, Key2=Steve}

jshell> immutableMap.put("Key5", "Chaitanya");
| java.lang.UnsupportedOperationException thrown:
| at ImmutableCollections.uoe (ImmutableCollections.java:71)
| at ImmutableCollections$AbstractImmutableMap.put 
(ImmutableCollections.java:558)
| at (#2:1)

2. No permiten elementos nulos. Agregar elementos nulos generará lo mismo UnsupportedOperationException.

leer  Java 9 - Anotación @SafeVarargs (con ejemplos)

Por avivcas

Deja una respuesta

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