问题描述
返回不可变列表而不是可变列表的原因是什么?
解决方法
性能
以下是Oracle JDK 9 Documentation的摘录:
为获得最佳性能,不可变集合存储数据集 永远不会改变。但是,您可能可以利用 性能和节省空间的好处,即使您的数据受制于 更改。这些集合可能会提供比 可变的集合,即使您的数据偶尔更改也是如此。
List#of
是静态工厂方法,提供了便捷的方式来创建不可变列表。换句话说,这是创建不可变列表的便捷方法。在Java-9之前,可以通过诸如Collections#unmodifiableList
之类的单独API来实现。
如果要获取可变列表,可以使用此不可变列表作为参数实例化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]