Close

Java Collections - Collections.unmodifiableCollection() Examples

Java Collections Java Java API 


Class:

java.util.Collections

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

Method:

public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)

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


Examples


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

package com.logicbig.example.collections;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

public class UnmodifiableCollectionExample {

public static void main(String... args) {
Collection<String> c = new ArrayList<>();
Collections.addAll(c, "a", "b", "c");
System.out.println("Original collection: " + c);

Collection<String> c2 = Collections.unmodifiableCollection(c);
System.out.println("Unmodifiable Collection: " + c2);

c.add("d");
System.out.println("Unmodifiable Collection after adding element to the ordinal one:");
System.out.println(c2);
}
}

Output

Original collection: [a, b, c]
Unmodifiable Collection: [a, b, c]
Unmodifiable Collection after adding element to the ordinal one:
[a, b, c, d]




Since this method returns 'read-only' collection, modifying itself will throw the exception:

package com.logicbig.example.collections;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

public class UnmodifiableCollectionExample2 {

public static void main(String... args) {
Collection<String> c = new ArrayList<>();
Collections.addAll(c, "a", "b", "c");
Collection<String> c2 = Collections.unmodifiableCollection(c);
c2.add("d");
}
}

Output

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




See Also