Initialisierung von Listen in einer Zeile

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In Java können wir eine Liste mit einer Vielzahl von Ansätzen in einer einzigen Codezeile initialisieren. In diesem Lab werden wir verschiedene Methoden lernen, um Listen in Java auf eine präzise Weise zu initialisieren.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) 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/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{{"Initialisierung von Listen in einer Zeile"}} java/arrays -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} java/collections_methods -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} java/lambda -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} java/classes_objects -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} java/arraylist -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} java/inner_classes -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} java/stream -.-> lab-117970{{"Initialisierung von Listen in einer Zeile"}} end

Verwendung der Arrays.asList()-Methode

Wir können eine Liste mithilfe eines Arrays erstellen, indem wir die asList()-Methode verwenden. Diese Methode nimmt die Elemente direkt als Parameter und gibt eine Liste fester Größe zurück. Wird versucht, ein Element hinzuzufügen, wird eine UnsupportedOperationException geworfen.

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); // Ausgabe : [red, blue, green]
    }
}

Um den Code auszuführen, öffnen Sie eine Befehlszeile, navigieren Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

javac ListInitializationDemo.java
java ListInitializationDemo

Verwendung von Java 8 Streams

Mit Java Streams kann eine Liste für die Streamelemente mithilfe der collect()-Methode erstellt werden.

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); // Ausgabe : [red, blue, green]
    }
}

Um den Code auszuführen, öffnen Sie eine Befehlszeile, navigieren Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

javac ListInitializationDemo.java
java ListInitializationDemo

Verwendung der List.of()-Methode

Java 9 bietet eine überladene List.of()-Methode für sowohl可变 als auch unveränderliche Listen.

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); // Ausgabe : [red, blue, green]
    }
}

Um den Code auszuführen, öffnen Sie eine Befehlszeile, navigieren Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

javac ListInitializationDemo.java
java ListInitializationDemo

注:“可变”这里原文mutable翻译得不太准确,更准确的是“可变的、可修改的” ,但按照要求尽量保持原文或常见翻译,所以这里保留了“可变” 。 建议在实际使用中根据具体语境调整表述,比如“可变的List” 。

Verwendung der Doppelklammer-Syntax

Die Doppelklammer-Initialisierung kann verwendet werden, um eine anonyme innere Klasse zu verwenden, um eine Liste zu initialisieren.

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); // Ausgabe : [red,blue,green]
    }
}

Um den Code auszuführen, öffnen Sie eine Befehlszeile, navigieren Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

javac ListInitializationDemo.java
java ListInitializationDemo

Verwendung von Apache Commons Collections

Apache Commons Collections bietet die unmodifiableList()-Methode, die eine unveränderliche Ansicht der angegebenen Liste zurückgibt.

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); // Ausgabe : [red,blue,green]
    }
}

Um den Code auszuführen, öffnen Sie das Terminal, wechseln Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

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

Verwendung der Guava-Bibliothek

Die Guava-Bibliothek bietet die newArrayList()-Methode, die eine可变的 ArrayList zurückgibt, die mit den Elementen initialisiert ist.

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); // Ausgabe : [red,blue,green]
    }
}

Um den Code auszuführen, öffnen Sie das Terminal, wechseln Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

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

注:“可变的”对应原文“mutable” 。

Verwendung von Guavas ImmutableList

Guava bietet auch die ImmutableList-Klasse, die eine unveränderliche Liste zurückgibt.

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); // Ausgabe : [red,blue,green]
    }
}

Um den Code auszuführen, öffnen Sie das Terminal, wechseln Sie zum Projektverzeichnis und führen Sie die folgenden Befehle aus:

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

Zusammenfassung

In Java gibt es zahlreiche Möglichkeiten, eine Liste in einer einzigen Codezeile zu initialisieren. Wir haben gesehen, wie man Java 8 Streams verwendet, um eine Liste zu erstellen, die Verwendung der Arrays.asList()-Methode und die List.of()-Methode für Java-Versionen ab 9. Wir haben auch die Doppelklammer-Initialisierung und ein Beispiel dafür gesehen, wie externe Java-Bibliotheken wie Apache Commons Collections und Guava verwendet werden können.