单行 List 初始化

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/output("Output") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ProgrammingTechniquesGroup -.-> java/lambda("Lambda") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/inner_classes("Inner Classes") java/FileandIOManagementGroup -.-> java/stream("Stream") subgraph Lab Skills java/output -.-> lab-117970{{"单行 List 初始化"}} java/arrays -.-> lab-117970{{"单行 List 初始化"}} java/collections_methods -.-> lab-117970{{"单行 List 初始化"}} java/lambda -.-> lab-117970{{"单行 List 初始化"}} java/classes_objects -.-> lab-117970{{"单行 List 初始化"}} java/arraylist -.-> lab-117970{{"单行 List 初始化"}} java/inner_classes -.-> lab-117970{{"单行 List 初始化"}} java/stream -.-> lab-117970{{"单行 List 初始化"}} end

使用 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)的示例。