Java 中,可以使用 Arrays.asList() 或 List.of() 等方法来一行初始化一个 List 或 ArrayList。本文主要介绍Java中初始化ArrayList或List方法代码,及使用一行代码进行集合初始化的方法。

1、使用实例初始化程序创建匿名内部类方式

可以使用 实例初始化程序 创建匿名内部类来初始化 ArrayListList,从而实现一行代码完成列表的初始化。这种方法通过创建一个匿名内部类并在其中进行初始化,非常灵活,尤其是在需要快速创建不可变的集合时。

//一般方式初始化
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
//创建匿名内部类方式初始化
ArrayList<String> list = new ArrayList<String>() {{
    add("A");
    add("B");
    add("C");
}};
//下面代码是初始化一个不可变的List,而不是一个ArrayList
List<String> list = ["A", "B", "C"];

2、使用Arrays.asList初始化

可以使用 Arrays.asList 方法来快速初始化一个 ArrayListList,但是要注意,Arrays.asList 返回的 List 是不可变的长度(即无法添加或删除元素)。如果需要一个可变大小的 ArrayList,可以将 Arrays.asList 的结果传递给 ArrayList 构造函数。

List<String> places = Arrays.asList("Buenos Aires", "Córdoba", "La Plata");
 //只有一个元素
List<String> places = Collections.singletonList("Buenos Aires");
//用ArrayList创建可变列表,可以用ArrayList通过不可变列表来创建
ArrayList<String> places = new ArrayList<>(Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));

3、使用List.of方法初始化

可以使用 List.of() 方法来用一行代码初始化一个不可变的 List。这个方法自 Java 9 引入,用于创建一个固定大小的、不可修改的 List

//需要在Java 10,11,12或更高版本中使用
var strings = List.of("foo", "bar", "baz");
//需要在Java 9或更高版本中使用
List<String> strings = List.of("foo", "bar", "baz");
//Java 8或更早版本
List<String> strings = Arrays.asList("foo", "bar", "baz");
//import static java.util.Arrays.asList;  //静态导入

注意:上面创建的是一个不可变的List

4、使用Stream.of方法初始化

可以使用 Stream.of() 方法来初始化一个 ListArrayList,并通过 Collectors.toList() 将流转换为 List

//静态导入
import static java.util.stream.Collectors.toList;
List<String> strings = Stream.of("foo", "bar", "baz").collect(toList());

//静态导入
import static java.util.stream.Collectors.toCollection;

ArrayList<String> strings = Stream.of("foo", "bar")
                             .collect(toCollection(ArrayList::new));
strings.add("baz");

List<String> places = Stream.of("Buenos Aires", "Córdoba", "La Plata").collect(Collectors.toList());

ArrayList<String> places = Stream.of("Buenos Aires", "Córdoba", "La Plata").collect(Collectors.toCollection(ArrayList::new));

5、使用Google_Guava初始化

可以使用 Google Guava 库中的 Lists.newArrayList() 方法来快速初始化一个 ArrayListList

文档https://github.com/google/guava/wiki/CollectionUtilitiesExplained

ArrayList<String> places = Lists.newArrayList("Buenos Aires", "Córdoba", "La Plata");

推荐文档