【问题标题】:Make ArrayList unchangeable [duplicate]使 ArrayList 不可更改[重复]
【发布时间】: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?

【问题讨论】:

标签: java arraylist


【解决方案1】:

有一个名为 Guava 的库可以为您完成所有这些工作,我几乎在每个项目中都使用它,因为不幸的是 Java 直到 Java 8 之后才支持真正不可变的集合。

List<Integer> mutable = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

List<Integer> immutable = ImmutableList.copyOf(mutable);

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多