The Collection is a framework that provides an architecture to store and manipulate the group of objects. In Java Collections, we perform operations like searching, sorting, Iterating over the given set of elements.
Modifiable: Modifiable means we can perform operations like adding, deleting, updating elements in collection data structures.
Example: Java List provides modification methods which include, add() method to add the elements in a list, replaceall() method to change the elements in a list.
Unmodifiable: Unmodifiable means we cannot perform adding, deleting, updating elements in collection data structures.
Example: We can initialize the modifiable class before any data structure so that we can prevent it from updating of any elements in the given data structure. We can create an unmodifiable view of a collection using Collections.unmodifiableCollection(collection)
Declaration
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)
Syntax:
Collections.unmodifiableCollection(collection)
Parameters: This method takes the collection as a parameter for which an unmodifiable view is to be returned.
Return Value: This method returns an unmodifiable view of the specified collection.
Example 1:
Java
// Java program to Iterate Over Unmodifiable Collection import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class GFG { public static void main(String args[]) { // create a list List<String> list = new ArrayList<String>(); // add elements list.add( "welcome" ); list.add( "to" ); list.add( "geeks for geeks" ); list.add( "This" ); list.add( "is" ); list.add( "Unmodifiable Collection" ); System.out.println( "Element are added to the list: " + list.get( 2 )); // create a immutable view of the list Collection<String> immutableCol = Collections.unmodifiableCollection(list); // iterator on the immutable list Iterator<String> iterator = immutableCol.iterator(); // print the immutable list while (iterator.hasNext()) { System.out.println(iterator.next()); } } } |
Element are added to the list: geeks for geeks welcome to geeks for geeks This is Unmodifiable Collection
Example 2:
Java
// Java program to Iterate Over Unmodifiable Collection import java.util.*; public class GFG { public static void main(String args[]) { // create a vector Vector<String> v = new Vector<String>(); // add elements v.add( "welcome" ); v.add( "to" ); v.add( "geeks for geeks" ); // create a immutable vector Collection<String> immutableCol = Collections.unmodifiableCollection(v); // iterate and print elements Iterator<String> iterator = immutableCol.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } } |
welcome to geeks for geeks
Example 3: For UnsupportedOperationException
Java
// Java program to demonstrate // unmodifiableCollection() method // for UnsupportedOperationException import java.util.*; public class GFG1 { public static void main(String[] argv) throws Exception { try { // creating object of ArrayList<Character> ArrayList<String> list = new ArrayList<>(); // populate the list list.add( "Geeks" ); list.add( "for" ); // printing the list System.out.println( "Initial list: " + list); // getting unmodifiable list // using unmodifiableCollection() method Collection<String> immutablelist = Collections.unmodifiableCollection(list); // Adding element to new Collection System.out.println( "\nTrying to modify" + " the unmodifiableCollection" ); immutablelist.add( "Geeks" ); } catch (UnsupportedOperationException e) { System.out.println( "Exception thrown : " + e); } } } |
Output
Initial list: [Geeks, for] Trying to modify the unmodifiableCollection Exception thrown : java.lang.UnsupportedOperationException