package lambdasinaction.chap10;
import java.util.*;
import static java.util.Optional.of;
import static java.util.Optional.empty;
public class OperationsWithOptional {
public static void main(String... args) {
System.out.println(max(of(3), of(5)));
System.out.println(max(empty(), of(5)));
Optional<Integer> opt1 = of(5);
Optional<Integer> opt2 = opt1.or(() -> of(4));
System.out.println(
of(5).or(() -> of(4))
);
}
public static final Optional<Integer> max(Optional<Integer> i, Optional<Integer> j) {
return i.flatMap(a -> j.map(b -> Math.max(a, b)));
}
}