Javaでリストを結合する2つの方法!(addAll,Stream)

Java Java

Javaのリスト(ArrayList)を結合する方法について書いています。
リストを結合するときには、リストからaddAllメソッドを使ったり、Streamのconcatを使うと良いです。

載せているコードについては、OpenJDKのバージョン19で動作を確認しました。

addAllメソッドで結合する

リストからaddAllメソッドを呼び出すことで、呼び出した元のリストに対して、指定したリストの要素を全て追加することができます。

例えば、下記のように使います。

import java.util.ArrayList;

public class ArrayListMerge {
    public void exec() {
        ArrayList<String> fruits1 = new ArrayList<String>();
        fruits1.add("apple");
        fruits1.add("banana");
        fruits1.add("peach");

        ArrayList<String> fruits2 = new ArrayList<String>();
        fruits2.add("orange");
        fruits2.add("lemon");

        fruits1.addAll(fruits2);

        for (String fruit : fruits1) {
            System.out.println(fruit);
        }
    }
}

最初にリストを使えるようにjava.util.ArrayListをインポートしました。
execメソッドの中で、addAllメソッドを使う処理をしています。

メソッドの処理では、まずfruits1変数・fruits2変数対して、リストを作成しました。
fruits1リストに3つの要素、fruits2リストに2つの要素を入れています。

次の処理で、fruits1リストからaddAllメソッドを呼び出しました。
引数に渡しているのは、呼び出し元のリストに追加したい要素を持っているリストです。

今回はfruits2リストを渡しているので、fruits2リストの要素がfruits1リストに全て追加されます。
最後にfruits1リストの要素を出力しました。

プログラムを実行すると、下記のように出力されました。

apple
banana
peach
orange
lemon

fruits1リストに対して、fruits2リストの要素が全て追加されたことが確認できました。

Stream.concatを使って結合する

Streamのconcatメソッドを使うことで、2つのリストを結合して、新しいリストを作成することができます。

例えば、下記のように使うことができます。

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

public class ArrayListMerge {
    public void exec() {
        ArrayList<String> fruits1 = new ArrayList<String>();
        fruits1.add("orange");
        fruits1.add("apple");

        ArrayList<String> fruits2 = new ArrayList<String>();
        fruits2.add("grape");
        fruits2.add("banana");

        List<String> newFruitsList = Stream.concat(fruits1.stream(), fruits2.stream()).toList();
        for (String fruit : newFruitsList) {
            System.out.println(fruit);
        }
    }
}

最初にリストを使えるようにjava.util.ArrayListをインポートしました。
Stream.concatの返り値を受け取るためにjava.util.Listと、Stream.concatを使うためにjava.util.stream.Streamをインポートしています。
execメソッドの中で、concatメソッドを使う処理をしています。

メソッドの処理では、先ほどと同じようにfruits1変数・fruits2変数対して、リストを作成しました。
fruits1リスト・fruits2リストに2つの文字列要素を入れています。

その後の処理で、Streamからconcatメソッドを呼び出して、2つのリストを結合しています。
引数として、第1引数と第2引数に渡しているのは結合したいリストのStreamです。

fruits1リスト・fruits2リストからstreamメソッドを呼び出すことで、リストのStreamを返しています。
その後にtoListメソッドを呼ぶことで、2つのリストを結合したリストを返します。
newFruitsList変数でリストを受け取って、最後にループして出力するようにしました。

プログラムを実行すると、下記のようにリストの要素が出力されました。

orange
apple
grape
banana

fruits1リスト・fruits2リストを結合したnewFruitsListリストを作ることができました。

リストを結合する方法まとめ

今回はJavaでリストを結合する方法について書きました。
記事の内容をまとめると、下記になります。

・リストからaddAllメソッドを呼ぶことで、指定したリストの全ての要素を、呼び出し元のリストに追加できた。
・Streamのconcatメソッドを使うことで、引数に渡したリスト(Stream)を結合した新しいリストが作れた。

コメント

タイトルとURLをコピーしました