Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで2つのリストを結合する方法をわかりやすく解説


はじめに

本記事では、Javaを使って2つのリストを1つに結合する方法について解説します。

ArrayListクラスはAbstractListクラスを継承し、Listインターフェースを実装しています。ArrayListは必要に応じてサイズが拡張される動的な配列を扱えるのが特徴です。リストは初期サイズを指定して生成され、そのサイズを超えて要素を追加するとコレクションは自動的に拡大し、逆にオブジェクトを削除した際には配列が縮小されることもあります。

入力と出力の確認

今回扱う処理の全体像を、まず具体的な例で見てみましょう。

入力:

1つ目のリスト: [Java, Python]
2つ目のリスト: [Mysql, Redshift]

期待される出力:

2つのリストを結合した結果: [Java, Python, Mysql, Redshift]

アルゴリズム

リスト結合の基本的な流れは以下の通りです。

ステップ1 - 開始
ステップ2 - input_list_1 と input_list_2 の2つのリストを宣言する
ステップ3 - 各リストに値を定義する
ステップ4 - join_lists() メソッドに両方のリストを引数として渡し、リストを結合する
ステップ5 - 結果を表示する
ステップ6 - 終了

例1:mainメソッドにすべての処理を記述する方法

まずは、すべての操作を「main」メソッド内にまとめて記述するシンプルな例です。ArrayListのコンストラクタにもう一方のリストを渡してコピーを作成し、addAll()メソッドで2つ目のリストの全要素を追加しています。

import java.util.ArrayList;
import java.util.List;
public class Demo {
   public static void main(String[] args) {
      List<String> input_list_1 = new ArrayList<String>();
      input_list_1.add("Java");
      input_list_1.add("Python");
      System.out.println("1つ目のリスト: " + input_list_1);

      List<String> input_list_2 = new ArrayList<String>();
      input_list_2.add("Mysql");
      input_list_2.add("Redshift");
      System.out.println("2つ目のリスト: " + input_list_2);

      List<String> result_list = new ArrayList<String>(input_list_1);
      result_list.addAll(input_list_2);
      System.out.println("\n2つのリストを結合した結果: " + result_list);
   }
}

出力結果

1つ目のリスト: [Java, Python]
2つ目のリスト: [Mysql, Redshift]

2つのリストを結合した結果: [Java, Python, Mysql, Redshift]

例2:オブジェクト指向スタイルでメソッドに分割する方法

次に、結合処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングの考え方に沿って実装した例を見てみましょう。join_lists()メソッドに2つのリストを渡すだけで結合できるため、処理の再利用性が高まります。

import java.util.ArrayList;
import java.util.List;
public class Demo {
   static void join_lists(List<String> input_list_1, List<String> input_list_2){
      List<String> result_list = new ArrayList<String>();
      result_list.addAll(input_list_1);
      result_list.addAll(input_list_2);
      System.out.println("\n2つのリストを結合した結果: " + result_list);
   }
   public static void main(String[] args) {
      List<String> input_list_1 = new ArrayList<String>();
      input_list_1.add("Java");
      input_list_1.add("Python");
      System.out.println("1つ目のリスト: " + input_list_1);

      List<String> input_list_2 = new ArrayList<String>();
      input_list_2.add("Mysql");
      input_list_2.add("Redshift");
      System.out.println("2つ目のリスト: " + input_list_2);

      join_lists(input_list_1, input_list_2);
   }
}

出力結果

1つ目のリスト: [Java, Python]
2つ目のリスト: [Mysql, Redshift]

2つのリストを結合した結果: [Java, Python, Mysql, Redshift]

補足:Stream APIを使った結合方法

Java 8以降を使用している場合は、Stream APIのconcat()メソッドを利用してリストを結合することもできます。元のリストを変更せずに新しいリストを生成したい場合に便利です。

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

List<String> result_list = Stream.concat(input_list_1.stream(), input_list_2.stream())
      .collect(Collectors.toList());

まとめ

Javaで2つのリストを結合するには、addAll()メソッドを使うのが最もシンプルで一般的な方法です。処理をメソッドに分離すれば再利用しやすくなり、Stream APIを活用すれば元のリストを壊さずに新しいリストを作成できます。用途に応じて適切な手法を選択しましょう。


  1. Javaで文字(Character)のリストを文字列に変換する方法

    Javaでは、Stream APIとCollectors.joining()を組み合わせることで、文字(Character)のリストを簡単に1つの文字列へ変換できます。この記事では、その基本的な手順とサンプルコードをわかりやすく解説します。 変換の手順 まず、次のような文字のリストがあったとします。 List<Character> list = Arrays.asList(W, e, l, c, o, m, e); このリストを文字列に変換するには、以下のようにstream()、map()、Collectors.joining()を使用します。 String string = li

  2. Pythonで2つのリストの共通要素を求めるプログラム(積集合の計算方法)

    リストの共通部分(Intersection/積集合)とは、2つのリストに共通して含まれるすべての要素を取り出し、それらを別の3つ目のリストに格納する操作のことです。 List1::[1,2,3] List2::[2,3,6] List3::[2,3] 上記の例では、List1とList2の両方に存在する「2」と「3」が抽出され、List3に格納されています。 アルゴリズム ステップ1:リストを入力する。 ステップ2:まず1つ目のリストの全要素を走査し、2つ目のリストの各要素と照合する。 ステップ3:要素が一致した場合、その値を3つ目のリストに格納する。 サンプルコード # 2つのリス