- 可以使用Collections.unmodifiableCollection(Collection c)方法来创建一个只能读的集合,后续对该集合进行删除或者添加元素时会抛出java.lang.UnsupportedOperationException。
- 因为集合不是基本数据类型,所以既然无法改变unlist,那么就修改aslist。下面代码发现,aslist添加两个元素后,unlist也相应的发生了改变。由此可见这种方法并不可以完全确保一个集合不能被修改。
- 可以利用of()创建不可变的集合
import java.util.List; public class TestListOf { public static void main(String[] args) { // 首先创建一个list集合 List<String> emptylist = List.of(); List<String> list1 = List.of("1"); List<String> list2 = List.of("a","b","c"); System.out.println(emptylist); System.out.println(list1); System.out.println(list2); try { List<String> listnull = List.of("2","3",null); }catch(NullPointerException e) { System.out.println("不可变的集合里不允许null"); } try { list1.add("添加一个元素"); }catch(UnsupportedOperationException e) { System.out.println("不可变的集合里不允许添加元素"); } try { list2.remove("删除一个元素"); }catch(UnsupportedOperationException e) { System.out.println("不可变的集合里不允许删除元素"); } } }
执行结果:
[]
[1]
[a, b, c]
不可变的集合里不允许null
不可变的集合里不允许添加元素
不可变的集合里不允许删除元素