Java - ArrayListの初期化、4つの方法

JavaでArrayList(List)を初期化するさまざまな方法を紹介します。

1. Arrays.asList() で ArrayList を初期化する

Arrays.asList(array) は引数として渡された配列を List として生成して返します。 ArrayListオブジェクトとして返したい場合は、 new ArrayList<>(Arrays.asList(array))のようにArrayListに変換してください。

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

public class Example {

    public static void main(String[] args) {

        List<String> list = Arrays.asList("apple", "grape", "banana", "kiwi");
        System.out.println(list);

        ArrayList<String> arrayList = new ArrayList<>(Arrays.asList("apple", "grape", "banana", "kiwi"));
        System.out.println(arrayList);
    }
}

Output:

[apple, grape, banana, kiwi]
[apple, grape, banana, kiwi]

2. List.of() で ArrayList を初期化する

Java 9では List.of() が追加され、 Arrays.asList() と同様に配列を引数として ArrayList を初期化できます。デフォルトではListオブジェクトとして返され、ArrayListとして返すには new ArrayList<String>()のように変換する必要があります。

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

public class Example {

    public static void main(String[] args) {

        List<String> list = List.of("apple", "grape", "banana", "kiwi");
        System.out.println(list);

        ArrayList<String> arrayList = new ArrayList<String>(List.of("apple", "grape", "banana", "kiwi"));
        System.out.println(arrayList);
    }
}

Output:

[apple, grape, banana, kiwi]

3. Double Brace Initializationを使用したArrayListの初期化

Double Brace Initialization({{ ... }}) を利用して ArrayList を初期化する方法があります。

通常、初期化後に要素を追加するには、以下のようにそれぞれ add() を呼び出す必要があります。

import java.util.ArrayList;

public class Example1 {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        list.add("apple");
        list.add("grape");
        list.add("banana");
        list.add("kiwi");

        System.out.println(list);
    }
}

ただし、Double Brace Initializationを使用すると、上記の例よりも少ないコードでオブジェクトを生成すると同時に要素を初期化するコードを作成できます。

import java.util.ArrayList;

public class Example1 {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>() {{
            add("apple");
            add("grape");
            add("banana");
            add("kiwi");
        }};

        System.out.println(list);
    }
}

Output:

[apple, grape, banana, kiwi]

Double Brace Initializationは、動作中に多くの匿名オブジェクトを作成すると言います。テストしてみると、私の場合は匿名オブジェクトを作成しないようですが、コンパイル中に最適化されているか、確認がうまくいかなかった可能性があります。詳細については、stackoverflowまたはbaeldungを参考にしていただければ幸いです。

4. StreamでArrayListを初期化する

Streamを使用してArrayListを初期化できます。以下のコードは、String配列の値をArrayListに追加する例です。

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

public class Example2 {

    public static void main(String[] args) {

        String[] arr = new String[] { "apple", "grape", "banana", "kiwi" };
        ArrayList<String> list = new ArrayList<>(Stream.of(arr)
                .collect(Collectors.toList()));
        System.out.println(list);
    }
}

Output:

[apple, grape, banana, kiwi]

Related Posts

codechachaCopyright ©2019 codechacha