En el último tutorial, aprendimos cómo crear listas inmutables con facilidad usando los métodos de fábrica introducidos en Java 9. En esta guía, veremos el uso de métodos de fábrica recién introducidos para crear conjuntos inmutables.

1. Creación de un conjunto inmutable antes de Java 9

Antes de discutir cómo usar los métodos de fábrica para crear conjuntos inmutables, veamos cómo solíamos crear conjuntos inmutables antes de Java 9.

1.1 Creando un conjunto inmutable vacío antes de java SE 9

Antes de Java 9, tenemos que usar unmodifiableSet () de la clase Colecciones para crear un conjunto inmutable. En el siguiente ejemplo, estamos creando un conjunto vacío.

Set<String> emptyHashSet = new HashSet<String>();
Set<String> immutableHSet = Collections.unmodifiableSet(emptyHashSet);

Probemos este código en JShell (una nueva herramienta introducida en Java 9)

Creando un conjunto vacío antes de Java 9

1.2 Creación de un conjunto inmutable no vacío antes de Java SE 9

Así es como creamos conjuntos inmutables no vacíos antes de Java 9. Como puede ver, tenemos que escribir varias líneas de código para que funcione. En Java 9 podemos escribir este código en una línea, lo veremos en la siguiente sección.

Set<String> hset = new HashSet<String>();
hset.add("Jon Snow");
hset.add("Khal Drogo");
hset.add("Daenerys");
Set<String> immutableSet = Collections.unmodifiableSet(hset);

No vacío inmutable Set antes de java 9

2. Java 9: ​​creación de un conjunto inmutable utilizando el método de fábrica estática de ()

Java 9 introdujo un par de versiones del método of () para crear conjuntos inmutables.

static <E> Set<E> of()

2.1 Java 9: ​​creación de un conjunto inmutable vacío

Set<String> immutableSet = Set.of();

Creando un conjunto vacío en Java 9 usando métodos de fábrica

2.2 Java 9: ​​creación de un conjunto inmutable no vacío

Como puede ver, lo simple que es crear un conjunto inmutable en Java 9.

Set<String> immutableSet = Set.of("Apple", "Banana", "Orange");

Creando un conjunto no vacío en Java 9 usando el método ()

3. ¿Qué es un conjunto inmutable?

1. Un conjunto inmutable no permite que sus elementos se agreguen, eliminen y actualicen, si intentamos hacerlo, obtendremos una UnsupportedOperationException. Tomemos un ejemplo para ver esto.

jshell> Set immutableSet = Set.of("Paul", "Lora", "Steve");
immutableSet ==> [Paul, Lora, Steve]

jshell> immutableSet.add("Harry")
|  java.lang.UnsupportedOperationException thrown: 
|        at ImmutableCollections.uoe (ImmutableCollections.java:71)
|        at ImmutableCollections$AbstractImmutableSet.add (ImmutableCollections.java:281)
|        at (#2:1)

2. No podemos agregar elementos nulos a un Conjunto inmutable.

jshell> Set immutableSet = Set.of("Paul", "Lora", "Steve");
immutableSet ==> [Lora, Steve, Paul]

jshell> immutableSet.add(null)
|  java.lang.UnsupportedOperationException thrown: 
|        at ImmutableCollections.uoe (ImmutableCollections.java:71)
|        at ImmutableCollections$AbstractImmutableSet.add (ImmutableCollections.java:281)
|        at (#2:1)
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 *