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:
- Como sugiere el nombre, estas listas son inmutables.
- Si se intenta agregar, eliminar y actualizar elementos en la lista, tendremos UnsupportedOperationException.
- La lista inmutable tampoco permite elementos nulos.
- 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