Close

Java Collections - Collections.unmodifiableList() Examples

Java Collections Java Java API 


Class:

java.util.Collections

java.lang.Objectjava.lang.Objectjava.util.Collectionsjava.util.CollectionsLogicBig

Method:

public static <T> List<T> unmodifiableList(List<? extends T> list)

Returns an unmodifiable view (read-only) of the specified list. Attempts to modify the returned List, whether direct or via its iterator, result in an UnsupportedOperationException.


Examples


Since the list created by this method is a view of the original list, modifying the original will reflect the changes in it:

package com.logicbig.example.collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class UnmodifiableListExample {

public static void main(String... args) {
List<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c");

System.out.println("Original list: " + list);
List<String> list2 = Collections.unmodifiableList(list);
System.out.println("unmodifiable list: " + list2);
//modifying the original
list.add("d");
System.out.println("unmodifiable list: " + list2);


}
}

Output

Original list: [a, b, c]
unmodifiable list: [a, b, c]
unmodifiable list: [a, b, c, d]




Modifying itself will throw the exception:

package com.logicbig.example.collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class UnmodifiableListExample2 {

public static void main(String... args) {
List<String> list = new ArrayList<>();
Collections.addAll(list, "a", "b", "c");
List<String> list2 = Collections.unmodifiableList(list);
list2.add("d");
}
}

Output

Caused by: java.lang.UnsupportedOperationException
at java.base/java.util.Collections$UnmodifiableCollection.add(Collections.java:1056)
at com.logicbig.example.collections.UnmodifiableListExample2.main(UnmodifiableListExample2.java:19)
... 6 more




See Also