直接上代码:
package com.xs.collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ReadOnly {
/**
* @param args
*/
public static void main(String[] args) {
List<String> list = new ArrayList<String>() {
private static final long serialVersionUID = 1L;
{
add("Tom");
add("Jim");
add("Jhon");
}
};
// 只读集合
List<String> readOnlyList = Collections.unmodifiableList(list);
System.out.println(readOnlyList.getClass());
// 同步集合
List<String> synchronizedList = Collections.synchronizedList(list);
System.out.println(synchronizedList.getClass());
}
}
如果试图对只读集合进行添加或修改,将会抛出UnsupportedOperationException异常:
public E set(int index, E element) {
throw new UnsupportedOperationException();
}
如果不希望方法返回的集合被修改,就可以使用只读集合;如果想要获取线程安全的集合,就可以使用同步集合。
只读集合:
同步集合: