Java - List の一覧を結合する
Java で 2 つの一覧を結合する方法について説明。List.addAll() で結合、Stream を使用して結合、重複要素の除外。
概要
Java で 2 つの一覧を結合する場合がある。ここでは 2 つの一覧を結合する方法について見ていく。
List.addAll() を使用して一覧を結合する方法
List.addAll() を使用して結合する方法は次のとおりである。
package com.devkuma.basic.list;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListAddAll {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> list2 = Arrays.asList("yun", "kim", "kuma");
// List.addAll を使用して一覧を結合する。
List<String> newList = new ArrayList<String>();
newList.addAll(list1);
newList.addAll(list2);
System.out.println(newList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo, yun, kim, kuma]
Stream.concat() を使用して一覧を結合する方法
Stream.concat() を使用して結合する方法は次のとおりである。
package com.devkuma.basic.list;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamConcatLists {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> list2 = Arrays.asList("yun", "kim", "kuma");
// Stream を使用して一覧を結合する。
List<String> newList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList());
System.out.println(newList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo, yun, kim, kuma]
Stream.flatMap() を使用して一覧を結合する方法
Stream.flatMap() を使用して結合する方法は次のとおりである。
package com.devkuma.basic.list;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamFlatMap {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> list2 = Arrays.asList("yun", "kim", "kuma");
// Stream.flatMap を使用して一覧を結合する。
List<List<String>> outer = Arrays.asList(list1, list2);
List<String> newList = outer.stream()
.flatMap(lst -> lst.stream())
.collect(Collectors.toList());
System.out.println(newList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo, yun, kim, kuma]
Stream を使用して一覧の重複要素を除外して結合する方法
Java で 2 つの一覧を結合するときに、内部の重複要素を除外して結合したい場合について説明する。
このような場合は、Stream.concat() と .distinct() を一緒に使用することで実現できる。
import java.util.List;
import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListJoinExcludeDuplicateElements {
public static void main(String[] args) {
// 文字列リスト
List<String> strList1 = Arrays.asList("devkuma", "araikuma", "kimkc", "jiwoo");
List<String> strList2 = Arrays.asList("devkuma", "araikuma", "kimkc");
// Stream を使用して Java の一覧を結合する。
List<String> newStrList = Stream.concat(strList1.stream(), strList2.stream())
.distinct() // 重複除外
.collect(Collectors.toList());
System.out.println(newStrList);
// 数値リスト
List<Integer> intList1 = Arrays.asList(5, 4, 3, 2, 1);
List<Integer> intList2 = Arrays.asList(1, 2, 3, 4);
// Stream を使用して Java の一覧を結合する。
List<Integer> newIntList = Stream.concat(intList1.stream(), intList2.stream())
.distinct() // 重複除外
.sorted(Comparator.naturalOrder()) // 昇順ソート
.collect(Collectors.toList());
System.out.println(newIntList);
}
}
Output:
[devkuma, araikuma, kimkc, jiwoo]
[1, 2, 3, 4, 5]