专用于集合的java.util包方法的Collections类,这些方法提供了涉及多态算法的各种附加操作。
此类提供unmodifiable()方法的不同变体,如下所示-序号方法与说明1静态集合 unmodifiableCollection(Collection c)
此方法接受任何集合对象,并返回指定集合的不可修改视图。
2静态 List unmodifiableList(List list)
此方法接受List接口的对象,并返回其不可修改的视图。
3静态 Map unmodifiableMap(Map m)
此方法接受Map接口的对象并返回其不可修改的视图。
4静态 Set unmodifiableSet(Set s)
此方法接受Set接口的对象并返回其不可修改的视图。
5静态 SortedMap unmodifiableSortedMap(SortedMap m)
此方法接受SortedMap接口的对象,并返回该对象的不可修改视图。
6静态 SortedSet unmodifiableSortedSet(SortedSet s)
此方法接受SortedSet接口的对象,并返回指定排序集的不可修改视图。
通过使用关于集合的方法之一,可以使集合对象为只读。
示例
以下Java程序创建一个ArrayList对象,向其中添加元素,然后将其转换为只读List对象。import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
public class CollectionReadOnly {
public static void main(String[] args) {
//实例化ArrayList对象
Vector vector = new Vector();
vector.add("JavaFx");
vector.add("Java");
vector.add("WebGL");
vector.add("OpenCV");
System.out.println(vector);
Collection immutableVector = Collections.unmodifiableCollection(vector);
System.out.println("Vector converted to read only "+immutableVector);
immutableVector.add("CoffeeScript");
}
}
例外[JavaFx, Java, WebGL, OpenCV]
Array list converted to read only [JavaFx, Java, WebGL, OpenCV]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
at September19.CollectionReadOnly.main(CollectionReadOnly.java:20)
检索List对象的只读视图后,您将无法修改其内容,即,不能直接或使用Iterator对象从其中添加或删除元素,如果这样做,则会引发UnsupportedOperationException。