【发布时间】:2020-03-11 18:02:01
【问题描述】:
我想要一个不可更改的 Java ArrayList。所以你不能删除或添加任何元素。所以所有工作都由构造函数完成。
到目前为止,我已尝试通过以下方式使列表最终化
public static final List<Integer> = new ArrayList<>;
这不起作用,因为您仍然可以在其中添加元素。
接下来我在网上搜索,发现你可以像这样覆盖所有方法:
public NoChangeArrayList<T> extends ArrayList<T> {
@Override
public boolean remove() {
//do nothing...
}
//override all change methods
(...)
}
这对我来说似乎不是一个好的解决方案,因为我需要为这么简单的事情投入大量工作。
有没有一种简单的方法可以制作一个不可更改的 ArrayList?
【问题讨论】:
-
Collections.unmodifiableList(list)- 这不会更改ArrayList,但会返回一个新列表(或视图,因为它将反映对原始列表所做的任何更改)