¿Cómo hacer una colección de solo lectura en Java?

La clase Collections se utiliza como estructura de datos para administrar los datos. Podemos agregar, eliminar, buscar y actualizar los datos en la lista , el conjunto o el objeto de mapa . La clase Collections tiene métodos predeterminados para estas operaciones. Podemos usar esos métodos fácilmente. Por defecto, cuando creamos un objeto de la clase Collections, será tanto de lectura como de escritura.

Colección de solo lectura: para hacer que el objeto de las colecciones sea de solo lectura, debemos restringir un objeto para agregar, eliminar o actualizar datos de él. La única operación es recuperar los datos.

Java tiene diferentes métodos para diferentes tipos de colección, como unmodifiableCollection() , unmodifiableMap( ) , ununmodifiableSet() , etc. Todos los métodos están predefinidos en la clase java.util.Collections. UnmodifiableCollection () es un método genérico para hacer una colección de solo lectura. Necesitamos hacer la referencia de la clase Collections para eso. Si tenemos un objeto de Set Interface, podemos usar ununmodificableSet() para hacer que sea de solo lectura.

Ejemplo 1: El siguiente código muestra cómo hacer que una Lista no se pueda modificar.

Java

// Java Program to make Collections Read-Only
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class GFG {
 
    public static void main(String[] args)
    {
        // List of Integer
        List<Integer> numbers = new ArrayList<>();
 
        // List have 1 to 10 numbers
        for (int i = 1; i <= 10; i++) {
            numbers.add(i);
        }
 
        // Iterate on the stream of integers and
        // print them
        numbers.stream().forEach(System.out::print);
 
        // Now we are adding one more element
        numbers.add(11);
 
        // Removing element from the list
        numbers.remove(8);
 
        // Updating List¶
        numbers.set(4, 4);
 
        System.out.println(
            "\nAfter Performing Some Operations");
 
        numbers.stream().forEach(System.out::print);
 
        System.out.println(
            "\nHence By default Collections object is Readable and Writable");
 
        // Now making Read-Only List
        // Using unmodifiableList() method.
        try {
            numbers = Collections.unmodifiableList(numbers);
 
            // This line will generate an Exception
            numbers.remove(11);
        }
        catch (UnsupportedOperationException
                   unsupportedOperationException) {
            System.out.println(
                "Exceptions is "
                + unsupportedOperationException);
        }
        finally {
            System.out.println(numbers.get(3));
            System.out.println(
                "Now list is only Read-Only");
        }
    }
}
Producción

12345678910
After Performing Some Operations
123446781011
Hence By default Collections object is Readable and Writable
Exceptions is java.lang.UnsupportedOperationException
4
Now list is only Read-Only

Arriba hay un ejemplo de cómo hacer una lista de solo lectura. Antes de hacer solo lectura, podemos realizar operaciones CRUD, pero después de hacer una lista de solo lectura, los métodos set(), add() y remove() generarán excepciones. Ahora solo podemos obtener los datos de la lista.

Ejemplo 2: el siguiente código muestra cómo hacer que un conjunto no se pueda modificar. 

Java

// Java Program to make
// Set Interface Object Read-Only
 
import java.util.Set;
import java.util.HashSet;
import java.util.Collections;
 
class GFG {
 
    public static void main(String[] args)
    {
        // Set of Integer
        Set<Integer> numbers = new HashSet<Integer>();
 
        // Set have 1 to 10 numbers
        for (int i = 1; i <= 5; i++) {
            numbers.add(i);
        }
 
        // print the integers
        numbers.stream().forEach(System.out::print);
 
        // Removing element from the list
        numbers.remove(5);
 
        System.out.println("\nAfter Performing Operation");
 
        numbers.stream().forEach(System.out::print);
 
        System.out.println(
            "\nSet is also By Default Readable and Writable");
 
        // Now making Read-Only Set
        // Using unmodifiableSet() method.
        try {
            numbers = Collections.unmodifiableSet(numbers);
 
            // This line will generate an Exception
            numbers.remove(4);
        }
        catch (UnsupportedOperationException
                   unsupportedOperationException) {
            System.out.println(
                "Exceptions is "
                + unsupportedOperationException);
        }
        finally {
            System.out.println(numbers.contains(3));
            System.out.println("Now Set is Read-Only");
        }
    }
}
Producción

12345
After Performing Operation
1234
Set is also By Default Readable and Writable
Exceptions is java.lang.UnsupportedOperationException
true
Now Set is Read-Only

En el ejemplo anterior, hacemos Establecer como de solo lectura. Podemos hacer que los objetos de las colecciones sean de solo lectura usando unmodifiableCollection() y para hacer que el mapa sea de solo lectura podemos usar el método unmodifiableMap()

Método Descripción
static <T> Collection<T> nomodificableCollection(Colección<? extiende T> c) Este método acepta cualquiera de los objetos de la colección y devuelve una vista no modificable de la colección especificada.
Lista <T> estática <T> Lista no modificable (Lista <? Extiende la lista T>) Este método acepta un objeto de la interfaz List y devuelve una vista no modificable del mismo.
static <K,V> Map<K,V> nomodificableMap(Map<? extiende K,? extiende V> m) Este método acepta un objeto de la interfaz Map y devuelve una vista no modificable del mismo.
static <T> Set<T> unmodificableSet(Set<? extiende T> s) Este método acepta un objeto de la interfaz Set y devuelve una vista no modificable del mismo.
static <K,V> SortedMap<K,V> no modificableSortedMap(SortedMap<K,? extiende V> m) Este método acepta un objeto de la interfaz SortedMap y devuelve una vista no modificable del mismo.
<T> estático SortedSet<T> no modificableSortedSet(SortedSet<T> s) Este método acepta un objeto de la interfaz SortedSet y devuelve una vista no modificable del conjunto ordenado especificado.

Publicación traducida automáticamente

Artículo escrito por denesdvaghani9200 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 *