Método de fábrica para crear un conjunto inmutable en Java 9

Java 9 se lanzó alrededor de marzo de 2017 e instale jdk 9, será útil para comprender el código utilizado en este artículo. En Java 9, hay algunas funciones agregadas en el lenguaje Java y el método de fábrica para Set inmutable es una de ellas.
¡Entonces empecemos!

Características del conjunto inmutable:

  • Como sugiere el nombre, estos conjuntos son inmutables.
  • Si se intenta agregar, eliminar y actualizar elementos en el conjunto, tendremos UnsupportedOperationException.
  • El conjunto inmutable tampoco permite elementos nulos.
  • Si se intenta crear un conjunto inmutable con un elemento nulo, tendremos NullPointerException. Si se intenta agregar un elemento nulo en el conjunto, tendremos UnsupportedOperationException.

Creando un conjunto inmutable en java 8

En java 8 para crear un conjunto inmutable, usamos el método java.util.Collections.unmodifiableSet(Set set). Este método devuelve una vista no modificable del conjunto especificado. Este método permite que los módulos proporcionen a los usuarios acceso de «solo lectura» a conjuntos internos.

Syntax: public static  Set unmodifiableSet(Set set)
Returns: an unmodifiable view of the specified set.
Exception: NA

Código Java para conjunto inmutable vacío y no vacío en Java 8:

// Java code illustrating immutable set in java 8
import java.util.*;
class GfG
{
    public static void main(String args[])
    {
        // creating empty set
        Set<String> s1 = new HashSet<String>();
        Set<String> us1 = Collections.unmodifiableSet(s1);
          
        // creating non-empty set
        Set<String> s2 = new HashSet<String>();
        s2.add("contribute.geeksforgeeks.org");
        Set us2 = Collections.unmodifiableSet(s2);
          
        System.out.println(us1);
        System.out.println(us2);
    }
}

Producción:

[]
[contribute.geeksforgeeks.org]

Ahora intentemos agregar elementos en este conjunto inmutable:

// Java code illustrating immutable set in java 8
import java.util.*;
  
class GfG
{
    public static void main(String args[])
    {
        // creating empty set and unmodifiable set
        HashSet<String> s1 = new HashSet<String>();
        Set<String> us1  = Collections.unmodifiableSet(s1);
           
        // creating non-empty set and unmodifiable set
        HashSet<String> s2 = new HashSet<String>();
        s2.add("contribute.geeksforgeeks.org");
        Set<String> us2 = Collections.unmodifiableSet(s2);
           
        // try adding new element
        us1.add("gfg");
        us2.add("ide.geeksforgeeks");
    }
}

El código anterior generará una excepción, porque estamos tratando de agregar un elemento en un conjunto inmutable.

Runtime Error : Exception in thread "main" 
java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
at ImmutableListDemo.main(File.java:16)

Creando un conjunto inmutable en java 9

Para crear un conjunto inmutable en Java 9, usamos el método of() .
Código Java para crear un conjunto inmutable en Java 9:

// Java code illustrating of() method
import java.util.Set;
  
class GfG
{
    public static void main(String args[])
    {
        // empty immutable set
        Set<String> is1 = Set.of("ide", "code", "practice");
          
        System.out.println(is1);
    }
}

Producción:

[ide.code.practice]

Ahora intentemos agregar elementos en este conjunto inmutable:

// Java code illustrating of() method
import java.util.*;
  
import com.google.common.collect.ImmutableSet;
class GfG
{
    public static void main(String args[])
    {
        // empty immutable set
        Set<>String is1 = Set.of();
            
        // non-empty immuttable set
        Set<String> is2 = Set.of("ide", "contribute", "support");
            
        // Adding an element throws exception
        is1.add(null);
        is2.add("set");             
    }
}
Exception in thread "main" java.lang.UnsupportedOperationException
    at com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:218)
    at ImmutableListDemo.main(Main.java:16)

Este artículo es una contribución de Abhishek Verma . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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