2 つの ArrayList を結合する方法

JavaBeginner
オンラインで実践に進む

はじめに

Java において、ArrayList はコレクションフレームワークにおける List インターフェイスの実装クラスで、データを格納するために使用されます。2 つの ArrayList を結合することは、実際には 2 つの ArrayList 要素を 1 つの ArrayList に結合するプロセスです。複数のデータストリームがあり、それらを 1 つのストリームにまとめたい場合に役立ちます。

ArrayList を作成する

まず、結合したい 2 つの ArrayList を作成しましょう。整数の 2 つの ArrayList を作成する例を以下に示します。

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

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

        ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1060,1070));
  System.out.println(arrList2);
    }
}

このコードを実行するには、ターミナルに次のコマンドを入力します。

javac Main.java && java Main

これにより、次のような出力が表示されます。

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]

addAll() を使って ArrayList を結合する

addAll() メソッドを使って 2 つの ArrayList を結合するには、以下のコードを参考にしてください。

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

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

        ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1060,1070));
  System.out.println(arrList2);

  // 2 つの ArrayList を結合する
  arrList1.addAll(arrList2);
  System.out.println("結合後:");
  System.out.println(arrList1);
    }
}

このコードを実行するには、ターミナルに次のコマンドを入力します。

javac Main.java && java Main

これにより、次のような出力が表示されます。

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]
結合後:
[1030, 1020, 1010, 1040, 1050, 1060, 1070]

flatMap() を使って ArrayList を結合する

flatMap() メソッドと distinct() メソッドを使って、2 つの ArrayList を結合することもできます。以下のコードを参考にしてください。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
 public static void main(String[] args){
  ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

  ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1030,1070));
  System.out.println(arrList2);

  // 2 つの ArrayList を結合する
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("結合後:");
  System.out.println(arrList3);
 }
}

このコードを実行するには、ターミナルに次のコマンドを入力します。

javac Main.java && java Main

これにより、次のような出力が表示されます。

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
結合後:
[1030, 1020, 1010, 1040, 1050, 1070]

完成コード

以下は、Java で 2 つの ArrayList を結合するための完成コードです。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
 public static void main(String[] args){
  ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

  ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1030,1070));
  System.out.println(arrList2);

  // 2 つの ArrayList を結合する
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("結合後:");
  System.out.println(arrList3);
 }
}

コードの実行

コードを実行するには、ターミナルに次のコマンドを入力します。

javac Main.java && java Main

これにより、次のような出力が表示されます。

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
結合後:
[1030, 1020, 1010, 1040, 1050, 1070]

まとめ

この実験では、Java において List の addAll() メソッドと stream API の flatMap() メソッドを使って 2 つの ArrayList を結合する方法を紹介しました。また、2 つの異なる ArrayList から一意の要素を結合する例も示しました。この実験があなたに役立ったことを願っています!