Java リストを結合する方法
Javaでリストを結合する方法です。
Javaで2つのリストを1つにまとめる方法です。SQLなら簡単に解決できそうだけどね。
複数のリストを結合したい場合は、いくつか方法があります。
ここでは Javaでリストを結合するStream、List.addAll、Stream.flatMapの3つの方法について 紹介します。
Streamを使用する
Stream同士のリストを結合する方法です。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class CombineLists {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("hoge", "piyo", "fuga", "foo");
List<String> list2 = Arrays.asList("bar", "baz", "saka");
// Stream を使用して Java リストを結合する
List<String> newList1 = Stream.concat( list1.stream(), list2.stream() )
.collect( Collectors.toList() );
System.out.println(newList1); //[hoge, piyo, fuga, foo, bar, baz, saka]
}
}
List.addAllを使用する
List.addAll()を使用して、リストを結合する方法です。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CombineLists {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("hoge", "piyo", "fuga", "foo");
List<String> list2 = Arrays.asList("bar", "baz", "saka");
// List.addAll を使用して Java リストを結合する
List<String> newList2 = new ArrayList<String>();
newList2.addAll(list1);
newList2.addAll(list2);
System.out.println(newList2); //[hoge, piyo, fuga, foo, bar, baz, saka]
}
}
Stream.flatMapを使用する
Stream.flatMapを使用して、リストを結合する方法です。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CombineLists {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("hoge", "piyo", "fuga", "foo");
List<String> list2 = Arrays.asList("bar", "baz", "saka");
//Stream.flatMap を使用して Java リストを結合する
List<List<String>> outer = Arrays.asList(list1, list2);
List<String> newList3 = outer.stream()
.flatMap(lst -> lst.stream())
.collect(Collectors.toList());
System.out.println(newList3); //[hoge, piyo, fuga, foo, bar, baz, saka]
}
}
まとめ
Javaでリストを結合する方法を紹介しました。
ちなみにStream.concat()とdistinct()を組み合わせることで、重複要素を除外して結合できます。こちらは別の機会に紹介したいと思います。
おつかれさまでした。