Java 为什么像List/Map/Set.of(…)或Arrays.asList(…)这样的方法返回一个不可变的列表?
返回不可变列表而不是可变列表的原因是什么?性能 以下摘录自: 为了获得最佳性能,不可变集合存储一个数据集 这永远不会改变。但是,您可以利用 性能和节省空间的好处,即使您的数据受到 改变这些集合可能比 可变集合,即使您的数据偶尔更改 是静态工厂方法,它提供了一种方便的方法来创建不可变的列表。换句话说,创建不可变的列表是一种方便的方法。在Java-9之前,这可以通过单独的API实现,如 如果希望获得可变列表,可以使用此不可变列表作为参数实例化Java 为什么像List/Map/Set.of(…)或Arrays.asList(…)这样的方法返回一个不可变的列表?,java,list,java-9,Java,List,Java 9,返回不可变列表而不是可变列表的原因是什么?性能 以下摘录自: 为了获得最佳性能,不可变集合存储一个数据集 这永远不会改变。但是,您可以利用 性能和节省空间的好处,即使您的数据受到 改变这些集合可能比 可变集合,即使您的数据偶尔更改 是静态工厂方法,它提供了一种方便的方法来创建不可变的列表。换句话说,创建不可变的列表是一种方便的方法。在Java-9之前,这可以通过单独的API实现,如 如果希望获得可变列表,可以使用此不可变列表作为参数实例化ArrayList import java.util.Ar
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);
}
}
演出
以下摘录自:
为了获得最佳性能,不可变集合存储一个数据集
这永远不会改变。但是,您可以利用
性能和节省空间的好处,即使您的数据受到
改变这些集合可能比
可变集合,即使您的数据偶尔更改
是静态工厂方法,它提供了一种方便的方法来创建不可变的列表。换句话说,创建不可变的列表是一种方便的方法。在Java-9之前,这可以通过单独的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);
}
}
Arrays.asList
不返回不可变列表。它返回一个固定长度的列表,因为它正在包装给定的显式数组。为什么返回一个可变列表?例如,出于实际原因。也许我想在以后添加或删除元素-我只是不明白为什么有这样的限制不能这样做。不变性是好的,因为它可以保护你不射中自己的脚。例如,静态最终列表
实际上永远不适合修改。数组。asList
不会返回不可变列表。它返回一个固定长度的列表,因为它正在包装给定的显式数组。为什么返回一个可变列表?例如,出于实际原因。也许我想在以后添加或删除元素-我只是不明白为什么有这样的限制不能这样做。不变性是好的,因为它可以保护你不射中自己的脚。例如,静态最终列表
确实不适合修改。这不会回答“为什么像…这样的方法返回不可变列表?”这不会回答“为什么像…这样的方法返回不可变列表?”