Java で 2つのリストを結合する方法

Usama Imtiaz 2023年10月12日
  1. Java で 2つのリストを結合するには Stream を使用する
  2. Java で 2つのリストを結合するには parameterize コンストラクタ を使用する
  3. Java で 2つのリストを結合するには 事前宣言された新しい配列 を使用する
Java で 2つのリストを結合する方法

何らかの手続きを行う前に、いくつかのリストを 1つに結合しなければならないことがよくあります。2つのリストを結合したり、より大きなリストに結合したりする方法は非常に多くあります。この記事では、Java で 2つのリストをマージする 2つの手っ取り早い方法を見ていきます。ArrayList または Java ベースのリンクトリスト。

多くのコレクションを結合する一つの方法は、java.util collection クラスの addAll() 関数を使用することです。addAll() 関数を使えば、必要なだけ多くのリストに内容を割り当てることができ、多くのリストをマージする最も簡単な方法です。

また、他にもいくつかの方法を説明しているので、より理解が深まるだろう。

  • ストリーム Stream の利用
  • パラメータ化されたコンストラクタ Parameterized Constructor の利用
  • 予め宣言されたリストと addAll() の利用

Java で 2つのリストを結合するには Stream を使用する

Java バージョン 8 のストリームは、問題の大部分を 1 行で解決することを可能にし、同時にコードがきれいに見えるようにしてくれます。異なる戦略を支えるアイテムの配置で、理想的な結果を生み出すためにパイプライン化することができます。後述のソリューションでは、lst.stream() はリストを Stream データ型に変換し、Stream.concat(Strem1,Stream2) は 2つの異なる Stream オブジェクトを連結し、Stream.collect(collectors.toList)Stream オブジェクトをリストオブジェクトに変換します。

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

public class Abc {
  public static void main(String[] args) {
    List<String> list1, list2;
    list1 = new ArrayList<String>();
    list2 = new ArrayList<String>();
    list1.add("1");
    list1.add("2");
    list1.add("3");
    list1.add("4");
    list2.add("5");
    list2.add("6");
    list2.add("7");
    list2.add("8");
    for (int i = 0; i < list1.size(); i++) {
      System.out.print(list1.get(i) + " ");
    }
    System.out.println();
    for (int i = 0; i < list2.size(); i++) {
      System.out.print(list2.get(i) + " ");
    }

    System.out.println();
    // first Solution
    List<String> resultList1 =
        Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList());
    // first Solution Prints
    System.out.println("first Solution Prints");
    for (int i = 0; i < resultList1.size(); i++) {
      System.out.print(resultList1.get(i) + " ");
    }

    System.out.println();
  }
}

Java で 2つのリストを結合するには parameterize コンストラクタ を使用する

List<String> newList = new ArrayList<String>(listOne); パラメタライズのコンストラクタを呼び出してリストを作成し、与えられたリストを新しいリストオブジェクトにコピーしてから newList.addAll(listTwo); 新たに宣言されたリストにリスト(list2)を追加します。

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

public class Abc {
  public static void main(String[] args) {
    List<String> list1, list2;
    list1 = new ArrayList<String>();
    list2 = new ArrayList<String>();
    list1.add("1");
    list1.add("2");
    list1.add("3");
    list1.add("4");
    list2.add("5");
    list2.add("6");
    list2.add("7");
    list2.add("8");
    for (int i = 0; i < list1.size(); i++) {
      System.out.print(list1.get(i) + " ");
    }
    System.out.println();
    for (int i = 0; i < list2.size(); i++) {
      System.out.print(list2.get(i) + " ");
    }
    System.out.println();
    // Second Solution
    List<String> resultList2 = new ArrayList<String>(list1);
    resultList2.addAll(list2);
    // Second Solution Prints
    System.out.println("Second Solution Prints");
    for (int i = 0; i < resultList2.size(); i++) {
      System.out.print(resultList2.get(i) + " ");
    }
    System.out.println();
  }
}

Java で 2つのリストを結合するには 事前宣言された新しい配列 を使用する

結果リスト resultList3 が定義されている場合や、以下のようにすることができます List<String> resultList3; n 個の結果リストを宣言した後、newList = new ArrayList<String>(list1) は、list1 の要素をコピーして新しい配列を初期化します。(list).addAll(list2); list2 の要素を list1 に追加します。

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

public class Abc {
  public static void main(String[] args) {
    List<String> list1, list2;
    list1 = new ArrayList<String>();
    list2 = new ArrayList<String>();
    list1.add("1");
    list1.add("2");
    list1.add("3");
    list1.add("4");
    list2.add("5");
    list2.add("6");
    list2.add("7");
    list2.add("8");
    for (int i = 0; i < list1.size(); i++) {
      System.out.print(list1.get(i) + " ");
    }
    System.out.println();
    for (int i = 0; i < list2.size(); i++) {
      System.out.print(list2.get(i) + " ");
    }
    System.out.println();
    // third Solution
    List<String> resultList3;
    (resultList3 = new ArrayList<String>(list1)).addAll(list2);
    // Third Solution Prints
    System.out.println("Third Solution Prints");
    for (int i = 0; i < resultList3.size(); i++) {
      System.out.print(resultList3.get(i) + " ");
    }
    System.out.println();
  }
}

関連記事 - Java List