osElse
OptionalIntがnullのとき、引数のint値を返す
System.out.println(IntStream.of(1, 2, 3).findFirst().orElse(100)); //=> findFirstで獲得した1を返す
System.out.println(IntStream.of().findFirst().orElse(100)); //=>findFirstで獲得できないため、引数の100を返す
orElseGet
OptionalIntがnullのとき、引数のSupplierを実行
System.out.println(IntStream.of(1, 2, 3).findFirst().orElseGet(() -> 100)); //=> findFirstで獲得した1を返す
System.out.println(IntStream.of().findFirst().orElseGet(() -> 100)); //=>findFirstで獲得できないため、()-> 100 が実行され戻り値の100を取得する
orElseという名前について...
ifPresentというメソッドにちなんで命名されたと考えられる
ifPresentはvoidメソッドなので、メソッドチェーンでorElseと共存させることはできない。
// 以下はコンパイルエラー
ifPresent(System.out::println).orElse(0);