如何使集合在Java中只读?
专用于集合的java.util包方法的Collections类,这些方法提供了涉及多态算法的各种附加操作。
此类提供unmodifiable()
方法的不同变体,如下所示-
序号 | 方法与说明 |
---|---|
1 | 静态<T>集合<T> unmodifiableCollection(Collection <?扩展T> c) 此方法接受任何集合对象,并返回指定集合的不可修改视图。 |
2 | 静态<T> List <T> unmodifiableList(List <?扩展T> list) 此方法接受List接口的对象,并返回其不可修改的视图。 |
3 | 静态<K,V> Map <K,V> unmodifiableMap(Map <?扩展K ,?扩展V> m) 此方法接受Map接口的对象并返回其不可修改的视图。 |
4 | 静态<T> Set <T> unmodifiableSet(Set <?扩展T> s) 此方法接受Set接口的对象并返回其不可修改的视图。 |
5 | 静态<K,V> SortedMap <K,V> unmodifiableSortedMap(SortedMap <K,?extended V> m) 此方法接受SortedMap接口的对象,并返回该对象的不可修改视图。 |
6 | 静态<T> SortedSet <T> unmodifiableSortedSet(SortedSet <T> 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<String> vector = new Vector<String>();
vector.add("JavaFx");
vector.add("Java");
vector.add("WebGL");
vector.add("OpenCV");
System.out.println(vector);
Collection<String> 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。
以上是 如何使集合在Java中只读? 的全部内容, 来源链接: utcz.com/z/338263.html