Java中将数组转换为可变、不可变和不可修改的List
学习在Java中将数组转换为列表的不同和有用的方法。在这个示例中,我们将使用Java 8的类和Google Guava库来从给定数组的元素创建一个ArrayList。
1.将数组转换为不可修改列表
如果你想创建一个由数组元素支持的不可修改列表实例,请按照以下方法操作。我们无法在不可修改列表中添加或删除新对象,但我们可以使用对象引用修改其中存储的对象。
1.1. 使用List.of() – Java 9
自Java 9以来,我们可以使用List.of()方法来返回一个包含数组元素的不可修改列表。
List<String> namesList = List.of(namesArray);
1.2. 使用Collections.unmodifiableList() – Java 8
在Java 8之前,使用Collections.unmodifiableList()
来获取一个包含数组元素的不可修改列表。
String[] namesArray = new String[] {"alex", "brian", "charles", "david"}; List<String> namesList = Collections.unmodifiableList( Arrays.asList(namesArray) );
1.3. 使用Java 8流
Steam API也是将元素数组收集到列表的一个很好的选择。流允许我们进行筛选和执行中间操作。
List<String> namesList = Arrays.stream(namesArray).collect(Collectors.toUnmodifiableList());
2.将数组转换为不可变列表
不可变列表不允许添加、删除或修改其中存储的项目。
如果你的项目中使用了Guava库,那么你也可以使用ImmutableList.copyOf()
方法来从数组中获取不可变列表。
List<String> namesList = ImmutableList.copyOf( namesArray );
3. 将数组转换为可变列表
如果你想创建一个由数组元素支持的可变列表实例,请按照以下方法操作。我们可以在可变列表中添加和删除新项目,也可以修改现有项目。
3.1. 使用Arrays.asList()
使用Arrays.asList()
来从元素数组获取一个可变列表。
List<String> namesList = Arrays.asList(namesArray);
3.2. 使用Guava的Lists.newArrayList()
同样,如果你的项目中使用了Guava库,你也可以使用这种方法从数组中获取一个可变的ArrayList。
ArrayList<String> namesList = Lists.newArrayList(namesArray);
以上就是Java中将数组转换为可变、不可变和不可修改的List的全部内容。