Java9で追加されたflatMap(Optional::stream)という関数を知ったのでメモ
これはOptionalオブジェクトが保持する値が非nullの場合はその値だけを持つstreamを返し、nullの場合は空のstreamを返す関数
今まではfilter(Optional::isPresent).map(Optional::get)で存在チェックをしていた
List<Optional<String>> list = List.of(
Optional.of("a"),
Optional.empty(),
Optional.of("c"),
);
list.stream().filter(Optional::isPresent).map(Optional::get).forEach(System.out::println);
// a
// c
これがflatMap(Optional::stream)を使うだけでよくなるというTips
list.stream().flatMap(Optional::stream).forEach(System.out::println); // a // c
他参考
https://qiita.com/rubytomato@github/items/92ac7944c830e54aa03d