Stream.concat()とdistinct()を組み合わせる
- 重複要素を排除しつつ2つのリストを結合したい場面に出くわし、StreamAPIを使って綺麗できないものだろうかと調べていたらStream.concat()という便利なモノがあったので、これと
distinct()
を組み合わせることで上手くできました。
List<Integer> list1 = List.of(1, 2, 3, 4, 5);
List<Integer> list2 = List.of(0, 4, 5, 6, 7);
- 上のリスト
list1
とlist2
を重複要素を排除して結合
List<Integer> result = Stream.concat(list1.stream(), list2.stream())
.distinct()
.sorted(Comparator.naturalOrder()) // 昇順でソート
.collect(Collectors.toList());
result.forEach(System.out::println); // -> 0,1,2,3,4,5,6,7