Método de fábrica para crear una lista inmutable en Java SE 9

Java 9 se lanzó alrededor de marzo de 2017 y en Java 9 se agregaron algunas características en el lenguaje Java y el método de fábrica para la Lista inmutable es una de ellas.
Características de la lista inmutable:

    1. Como sugiere el nombre, estas listas son inmutables.
    2. Si se intenta agregar, eliminar y actualizar elementos en la lista, tendremos UnsupportedOperationException.
    3. La lista inmutable tampoco permite elementos nulos.
    4. Si se intenta crear una lista inmutable con un elemento nulo, tendremos NullPointerException. Si se intenta agregar un elemento nulo en la lista, tendremos UnsupportedOperationException.

Creando una lista inmutable en Java 8

En Java SE 8, para crear una lista inmutable en Java 8, usamos el método java.util.Collections.unmodifiableList(List list).unmodifiableList(List list). Este método devuelve una vista no modificable de la lista especificada. Este método permite que los módulos proporcionen a los usuarios acceso de «solo lectura» a las listas internas.

Syntax: public static  List unmodifiableList(List list)
Returns: an unmodifiable view of the specified list.
Exception: NA

Código Java para lista inmutable vacía y no vacía en Java 8:

// Java code illustrating
// creating of an 
// immutable list in Java 8
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // creating empty list
        List<String> gfg_empty = new ArrayList<String>();
          
        // making list immutable
        List empty_immutable1 
                = Collections.unmodifiableList(gfg_empty);
          
        // creating non-empty list
        List<String> gfg_non_empty = new ArrayList<String>();
  
        gfg_non_empty.add("write.geeksforgeeks.org");
        gfg_non_empty.add("www.geeksforgeeks.org");
          
        // making list immutable
        List empty_immutable2 
                = Collections.unmodifiableList(gfg_non_empty);
          
        System.out.println(empty_immutable1);
        System.out.println(empty_immutable2); 
    }
}

Producción:

[]
[write.geeksforgeeks.org, www.geeksforgeeks.org]

Ahora intentemos agregar elementos en la lista inmutable

// Java code illustrating
// an add operation 
// in immutable list in Java 8
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // creating empty list
        List<String> gfg_empty = new ArrayList<String>();
          
        // making list immutable
        List empty_immutable1 
                    = Collections.unmodifiableList(gfg_empty);
          
        // adding element in gfg_empty list
        empty_immutable1.add("ide.geeksforgeeks.org");
          
        // creating non-empty list
        List<String> gfg_non_empty = new ArrayList<String>();
  
        gfg_non_empty.add("write.geeksforgeeks.org");
        gfg_non_empty.add("www.geeksforgeeks.org");
          
        // making list immutable
        List empty_immutable2 
                    = Collections.unmodifiableList(gfg_non_empty);
          
        // adding element in gfg_non_empty list
        empty_immutable2.add("quiz.geeksforgeeks.org");
          
          
    }
}

Excepción:

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

Creando una lista inmutable en Java 9

Java SE 9 ha introducido un par de métodos en la interfaz List para crear una lista inmutable. Para crear una lista inmutable en Java 9, usamos el método of() .
Código Java para crear una lista inmutable en Java 9:

// Java code illustrating
// creating immutable list
// using  of() method
import java.util.*;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // creating empty immutable list
        List<String> immutable = List.of();
           
        // creating non-empty immutable list
        List<String> immutable1 = List.of("contribute", "ide");
           
        System.out.println("empty immutable list: " + immutable);
        System.out.println("non-empty immutable list: " + immutable);
             
    }
}

Producción:

empty immutable list: []
non-empty immutable list: [contribute, ide]

Intentemos agregar algunos elementos en la lista inmutable:

// Java code illustrating add 
// operation on immutable list
import java.util.*;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // creating empty immutable list
        List<String> immutable = List.of();
        immutable.add(null);
           
        // creating non-empty immutable list
        List<String> immutable1 = List.of("contribute", "ide");
        immutable1.add("install jdk 9");
           
    }
}

Después de ejecutar el código anterior, debe obtener UnsupportedOperationException.

Este artículo es una contribución de Abhishek Verma . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@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 *