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