单行 List 初始化

JavaBeginner
立即练习

介绍

在 Java 中,我们可以使用多种方法在一行代码中初始化一个 List。在本实验中,我们将学习如何在 Java 中以简洁的方式初始化 List。

使用 Arrays.asList() 方法

我们可以通过使用 asList() 方法从数组创建一个 List。该方法直接将元素作为参数,并返回一个固定大小的列表。如果尝试添加元素,则会抛出 UnsupportedOperationException 异常。

import java.util.Arrays;
import java.util.List;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = Arrays.asList("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //输出 : [red, blue, green]
    }
}

要运行代码,请打开命令提示符,导航到项目目录并运行以下命令:

javac ListInitializationDemo.java
java ListInitializationDemo

使用 Java 8 Streams

可以使用 Java Streams 通过 collect() 方法为流元素创建一个 List。

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = Stream.of("red", "blue", "green")
                                        .collect(Collectors.toList());
        System.out.print("Colors List : " + colorsList); //输出 : [red, blue, green]
    }
}

要运行代码,请打开命令提示符,导航到项目目录并运行以下命令:

javac ListInitializationDemo.java
java ListInitializationDemo

使用 List.of() 方法

Java 9 提供了一个重载的 List.of() 方法,用于创建可变和不可变的 List。

import java.util.List;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = List.of("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //输出 : [red, blue, green]
    }
}

要运行代码,请打开命令提示符,导航到项目目录并运行以下命令:

javac ListInitializationDemo.java
java ListInitializationDemo

使用双括号语法

双大括号初始化(Double Brace Initialization)可以通过匿名内部类来初始化一个 List。

import java.util.List;
import java.util.ArrayList;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = new ArrayList<String>() {
            {
                add("red");
                add("blue");
                add("green");
            }
        };
        System.out.print("Colors List : " + colorsList); //输出 : [red,blue,green]
    }
}

要运行代码,请打开命令提示符,导航到项目目录并运行以下命令:

javac ListInitializationDemo.java
java ListInitializationDemo

使用 Apache Commons Collections

Apache Commons Collections 提供了 unmodifiableList() 方法,该方法返回指定列表的不可修改视图。

import java.util.List;
import org.apache.commons.collections4.ListUtils;
import java.util.Arrays;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = ListUtils.unmodifiableList(
                Arrays.asList("red", "blue", "green")
        );
        System.out.print("Colors List : " + colorsList); //输出 : [red,blue,green]
    }
}

要运行代码,请打开终端,进入项目目录并运行以下命令:

javac -cp commons-collections4-4.4.jar ListInitializationDemo.java
java -cp commons-collections4-4.4.jar:. ListInitializationDemo

使用 Guava 库

Guava 库提供了 newArrayList() 方法,该方法返回一个用指定元素初始化的可变 ArrayList。

import java.util.List;
import com.google.common.collect.Lists;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = Lists.newArrayList("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //输出 : [red,blue,green]
    }
}

要运行代码,请打开终端,进入项目目录并运行以下命令:

javac -cp guava-31.0.1-jre.jar ListInitializationDemo.java
java -cp guava-31.0.1-jre.jar:. ListInitializationDemo

使用 Guava 的 ImmutableList

Guava 还提供了 ImmutableList 类,该类返回一个不可变的 List。

import java.util.List;
import com.google.common.collect.ImmutableList;

public class ListInitializationDemo {
    public static void main(String[] args) {
        List<String> colorsList = ImmutableList.of("red", "blue", "green");
        System.out.print("Colors List : " + colorsList); //输出 : [red,blue,green]
    }
}

要运行代码,请打开终端,进入项目目录并运行以下命令:

javac -cp guava-31.0.1-jre.jar ListInitializationDemo.java
java -cp guava-31.0.1-jre.jar:. ListInitializationDemo

总结

在 Java 中,有许多方法可以用一行代码初始化一个 List。我们已经了解了如何使用 Java 8 Stream 创建 List、使用 Arrays.asList() 方法,以及 Java 9 之后版本中的 List.of() 方法。我们还介绍了双大括号初始化(Double Brace Initialization),并展示了如何使用外部 Java 库(如 Apache Commons Collections 和 Guava)的示例。