UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Java】いまさらJava9で追加されたflatMap(Optional::stream)を知った

Java9で追加されたflatMap(Optional::stream)という関数を知ったのでメモ

docs.oracle.com

これは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