Since the SortedMap created by this method is a view of the original map, modifying the original will reflect the changes in it:
package com.logicbig.example.collections;
import java.util.Collections;
import java.util.SortedMap;
import java.util.TreeMap;
public class UnmodifiableSortedMapExample {
public static void main(String... args) {
SortedMap<Integer, String> map = new TreeMap<>();
map.put(1, "one");
map.put(2, "two");
System.out.println("Original Map: " + map);
SortedMap<Integer, String> map2 = Collections.unmodifiableSortedMap(map);
System.out.println("unmodifiableSortedMap: " + map2);
//modifying the original one
map.remove(2);
System.out.println("unmodifiableSortedMap: " + map2);
}
}
Output
Original Map: {1=one, 2=two}
unmodifiableSortedMap: {1=one, 2=two}
unmodifiableSortedMap: {1=one}
Modifying itself will throw the exception:
package com.logicbig.example.collections;
import java.util.*;
public class UnmodifiableSortedMapExample2 {
public static void main(String... args) {
SortedMap<Integer, String> map = new TreeMap<>();
map.put(1, "one");
map.put(2, "two");
System.out.println("Original Map: " + map);
SortedMap<Integer, String> map2 = Collections.unmodifiableSortedMap(map);
map2.remove(1);
}
}
Output
Caused by: java.lang.UnsupportedOperationException
at java.base/java.util.Collections$UnmodifiableMap.remove(Collections.java:1456)
at com.logicbig.example.collections.UnmodifiableSortedMapExample2.main(UnmodifiableSortedMapExample2.java:19)
... 6 more