[英]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.