O método unmodifiableMap() da classe java.util.Collections é usado para retornar uma visualização não modificável do mapa especificado. Este método permite que os módulos forneçam aos usuários acesso “somente leitura” aos mapas internos. As operações de consulta no mapa retornado “lêem” para o mapa especificado e as tentativas de modificar o mapa retornado, seja direto ou por meio de suas visualizações de coleção, resultam em uma UnsupportedOperationException.

O mapa retornado será serializável se o mapa especificado for serializável

Sintaxe:

public static <K, V> Map<K, V> 
    unmodifiableMap(Map<? extends K, ? extends V> m)

Parâmetros: Este método usa o mapa como um parâmetro para o qual uma visualização não modificável deve ser retornada.

Valor de retorno: Este método retorna uma visão não modificável do mapa especificado.

Abaixo estão os exemplos para ilustrar o método unmodifiableMap()

Exemplo 1:

// Java program to demonstrate
// unmodifiableMap() method
// for <String, String> value
  
import java.util.*;
  
public class GFG1 {
    public static void main(String[] argv) throws Exception
    {
  
        try {
  
            // creating object of Hashtable<String, String>
            Hashtable<String, String>
                table = new Hashtable<String, String>();
  
            // populate the table
            table.put("key1", "1");
            table.put("key2", "2");
            table.put("key3", "3");
  
            // getting unmodifiable map
            // using unmodifiableMap() method
            Map<String, String> m = Collections
                                        .unmodifiableMap(table);
  
            // printing the unmodifiableMap
            System.out.println("Initial collection: " + table);
        }
  
        catch (UnsupportedOperationException e) {
            System.out.println("Exception thrown : " + e);
        }
    }
}
Saída:
Coleta inicial: {key3 = 3, key2 = 2, key1 = 1}

Exemplo 2: Para UnsupportedOperationException

// Java program to demonstrate
// unmodifiableMap() method
// for <String, String> value
  
import java.util.*;
  
public class GFG1 {
    public static void main(String[] argv)
        throws Exception
    {
  
        try {
  
            // creating object of Hashtable<String, String>
            Hashtable<String, String>
                table = new Hashtable<String, String>();
  
            // populate the table
            table.put("key1", "1");
            table.put("key2", "2");
            table.put("key3", "3");
  
            // getting unmodifiable map
            // using unmodifiableMap() method
            Map<String, String> m = Collections
                                        .unmodifiableMap(table);
  
            // printing the unmodifiableMap
            System.out.println("Initial collection: "
                               + table);
  
            // Adding element to new Collection
            System.out.println("\nTrying to modify"
                               + " the unmodifiablemap");
            m.put("key4", "4");
        }
  
        catch (UnsupportedOperationException e) {
            System.out.println("Exception thrown : " + e);
        }
    }
}
Saída:
Coleta inicial: {key3 = 3, key2 = 2, key1 = 1}

Tentando modificar o mapa não modificável
Exceção lançada: java.lang.UnsupportedOperationException