首先,我们想到的是final关键字,但是final一般用作常量且要初始化,不符合我们的需求,因为一旦定义后面就不能再修改。

可以使用Collections.unmodifiableCollection(Collection c)创建一个只读集合。

  • 如果是list     Collections.unmodifiableList
  • 如果是map   Collections.unmodifiableMap
  • 如果是set     Collections.unmodifiableSet

如图所示:

Java中如何确保集合不被修改

举一个List例子

 import java.util.*;

public class UnmodifiableListExample{

    public static void main(String[] args) {
        List<String> list = new ArrayList();
        list.add("a");
        list = Collections.unmodifiableList(list);
        list.add("b");
        System.out.println(list);

    }
} 

输出

Java中如何确保集合不被修改

使用unmodifiableList转化后再次修改则报错 Exception in thread "main" java.lang.UnsupportedOperationException