Making a Collection Read-Only

This section describes you how to make a collection
read-only. In this section, list (component of the collection) has been
represented for making it read-only. By default, list is not read-only. If the
list is read-only then you can not add or change any element of the list.
In the given example, you can see that a list has been
made read-only using the unmodifiableList() method of the Collections
class. If you want to do the same thing for another collection like Set,
Collection, SortedSet you have to use the given methods:
Collection<T> unmodifiableCollection(Collection<?
extends T> c)
List<T> unmodifiableList(List<? extends T> list)
Set<T> unmodifiableSet(Set<? extends T> s)
SortedSet<T> unmodifiableSortedSet(SortedSet<T> s)
After making the collections read-only any attempts for
the modification occurs then the errors are captured by the UnsupportedOperationException
in the catch block.
Here is the code of the program:
import java.util.*;
import java.io.*;
public class SetCollectionReadOnly{
public static void main(String[] args) throws IOException{
int n = 0;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("How many names you want to enter in the list : ");
try{
n = Integer.parseInt(in.readLine());
}
catch(NumberFormatException ne){
System.out.println(ne.getMessage() + " is not a legal value.");
System.out.println("Please enter a numeric value.");
System.exit(1);
}
String[] names = new String[n];
System.out.println("Enter names for the list : ");
for(int i = 0; i < n; i++){
names[i] = in.readLine();
}
List<String> list = Arrays.asList(names);
System.out.println("Elements available in the list are : " + list);
list = Collections.unmodifiableList(list);
try{
System.out.print("Entry for set to the list : ");
list.set(0, in.readLine());
}
catch(UnsupportedOperationException ue){
System.out.println("You can not modify the list.");
System.exit(1);
}
}
}
|
Download this
example.

|