1 行での List の初期化

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Javaでは、様々なアプローチを使って1行のコードでListを初期化することができます。この実験では、JavaでListを簡潔に初期化するさまざまな方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) 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/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{{"1 行での List の初期化"}} java/arrays -.-> lab-117970{{"1 行での List の初期化"}} java/collections_methods -.-> lab-117970{{"1 行での List の初期化"}} java/lambda -.-> lab-117970{{"1 行での List の初期化"}} java/classes_objects -.-> lab-117970{{"1 行での List の初期化"}} java/arraylist -.-> lab-117970{{"1 行での List の初期化"}} java/inner_classes -.-> lab-117970{{"1 行での List の初期化"}} java/stream -.-> lab-117970{{"1 行での 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 用にオーバーロードされた List.of() メソッドが提供されています。

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

ダブルブレース構文を使用する

ダブルブレース初期化を使用して、匿名内部クラスを使って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 ライブラリは、要素で初期化された可変の ArrayList を返す newArrayList() メソッドを提供します。

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 は、不変な List を返す ImmutableList クラスも提供しています。

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 では、1 行のコードで List を初期化する方法がたくさんあります。Java 8 Stream を使って List を作成する方法、Arrays.asList() メソッドの使用方法、および 9 以降の Java バージョンでの List.of() メソッドの使用方法を見てきました。また、ダブルブレース初期化と、Apache Commons Collections や Guava のような外部の Java ライブラリをどのように使用するかの例も見てきました。