A classe Collections é usada como uma estrutura de dados para gerenciar os dados. Podemos adicionar, remover, buscar e atualizar os dados na lista , conjunto ou objeto do mapa . A classe de coleções tem métodos padrão para essas operações. Podemos usar esses métodos facilmente. Por padrão, quando criamos um objeto da classe Coleções, ele será Legível e Gravável.

Coleção somente leitura: para tornar o objeto de coleções somente leitura, precisamos restringir um objeto para adicionar, remover ou atualizar dados dele. A única operação é buscar os dados.

Java tem métodos diferentes para diferentes tipos de coleção como unmodifiableCollection() , unmodifiableMap() , ununmodifiableSet() etc. Todos os métodos são predefinidos na classe java.util.Collections. O unmodifiableCollection() é um método genérico para fazer uma coleção somente leitura. Precisamos fazer a referência da classe Coleções para isso. Se tivermos um objeto de Set Interface, podemos usar ununmodifiableSet() para tornar somente leitura.

Exemplo 1: o código abaixo mostra como tornar uma lista inalterável.

// 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");
        }
    }
}
Saída

12345678910
Depois de realizar algumas operações
123446781011
Portanto, por padrão, o objeto de coleções é legível e gravável
As exceções são java.lang.UnsupportedOperationException
4
Agora a lista é somente leitura

Acima está um exemplo de como fazer uma lista somente leitura. Antes de fazer somente leitura, podemos realizar operações CRUD, mas depois de fazer a lista somente leitura, os métodos set(), add() e remove() irão gerar exceções. Agora podemos apenas buscar os dados da lista.

Exemplo 2: o código abaixo mostra como tornar um Conjunto não modificável. 

// 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");
        }
    }
}
Saída
12345
Depois de realizar a operação
1234
Definir também é por padrão legível e gravável
As exceções são java.lang.UnsupportedOperationException
verdade
Agora definido é somente leitura

No exemplo acima, definimos Definir como somente leitura. Podemos tornar o objeto de coleções somente leitura usando unmodifiableCollection() e para tornar o objeto somente leitura de mapa, podemos usar o método unmodifiableMap()

MétodoDescrição
static <T> Collection <T> unmodifiableCollection (Collection <? extends T> c)Este método aceita qualquer um dos objetos da coleção e retorna uma visão não modificável da coleção especificada.
static <T> List <T> unmodifiableList (List <? extends T> lista)Este método aceita um objeto da interface List e retorna uma visão não modificável dele.
static <K, V> Map <K, V> unmodifiableMap (Map <? estende K ,? estende V> m)Este método aceita um objeto da interface Map e retorna uma visão não modificável dele.
static <T> Set <T> unmodifiableSet (Set <? extends T> s)Este método aceita um objeto da interface Set e retorna uma visão não modificável dele.
static <K, V> SortedMap <K, V> unmodifiableSortedMap (SortedMap <K ,? extends V> m)Este método aceita um objeto da interface SortedMap e retorna uma visão não modificável dele.
static <T> SortedSet <T> unmodifiableSortedSet (SortedSet <T> s)Este método aceita um objeto da interface SortedSet e retorna uma visão não modificável do conjunto classificado especificado.