[an error occurred while processing this directive]

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[] argsthrows 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.

                         

[an error occurred while processing this directive]