Java で 2つのリストを結合する方法
-
Java で 2つのリストを結合するには
Stream
を使用する -
Java で 2つのリストを結合するには
parameterize コンストラクタ
を使用する -
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();
}
}