繁体   English   中英

为什么像 List/Map/Set.of(...) 或 Arrays.asList(...) 这样的方法返回一个不可变的列表?

[英]Why do methods like List/Map/Set.of(...) or Arrays.asList(...) return an immutable list?

返回不可变列表而不是可变列表的原因是什么?

表现

以下是Oracle JDK 9 文档的摘录:

为了获得最佳性能,不可变集合存储了一个永远不会改变的数据集。 但是,即使您的数据可能会发生变化,您也可以利用性能和节省空间的优势。 这些集合可能比可变集合提供更好的性能,即使您的数据偶尔会发生变化。

List#of是静态工厂方法,它提供了一种创建不可变列表的便捷方法 换句话说,这是创建不可变列表的便捷方法 在 Java-9 之前,这可以通过单独的 API 实现,例如Collections#unmodifiableList

如果你想得到一个可变列表,你可以用这个不可变列表作为参数实例化一个ArrayList

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> mutableList = new ArrayList<>(List.of("A", "B", "C"));
        mutableList.add("D");
        System.out.println(mutableList);
    }
}

输出:

[A, B, C, D]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM