可以通過以下幾種方法來確保一個集合不能被修改:
Collections.unmodifiableList
、Collections.unmodifiableSet
和Collections.unmodifiableMap
。這些方法返回的集合只能讀取元素,而不能修改。List<String> list = new ArrayList<>();
list.add("item1");
list.add("item2");
List<String> unmodifiableList = Collections.unmodifiableList(list);
unmodifiableList.add("item3"); // 拋出UnsupportedOperationException異常
ImmutableXXX.copyOf
方法,可以創建一個集合的只讀視圖。List<String> list = new ArrayList<>();
list.add("item1");
list.add("item2");
List<String> readOnlyList = ImmutableList.copyOf(list);
readOnlyList.add("item3"); // 拋出UnsupportedOperationException異常
List.of
、Set.of
和Map.of
。這些方法返回的集合是不可修改的。List<String> list = List.of("item1", "item2");
list.add("item3"); // 拋出UnsupportedOperationException異常
Collections.unmodifiableList
方法返回的集合,或者在方法內部創建一個副本并返回。private List<String> list = new ArrayList<>();
public List<String> getList() {
return Collections.unmodifiableList(list); // 返回不可修改的集合
}
public void addItem(String item) {
if (item != null) {
list.add(item); // 添加元素到原始集合
}
}