import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
public class OptionalDemo {
public static void main(String[] args) {
Optional first = Stream.of(3, 1, 4, 1, 5, 9)
.filter(n -> n > 10)
.findFirst();
System.out.println(first);
// System.out.println(first.isPresent() ? (int) first.get() : 0);
int defaultValue = 0;
System.out.println(first.orElse(defaultValue));
System.out.println(first.orElseGet(() -> defaultValue));
first.ifPresent(System.out::println);
List strings = Arrays.asList("this", "is", "a", "list", "of", "strings");
Optional s = strings.stream()
.findFirst();
System.out.println(s.orElse("No string found; legal values are: " + strings));
System.out.println(s.orElseGet(() -> "No string found; legal values are: " + strings));
System.out.println(s.orElseThrow(IllegalArgumentException::new)); // default constructor
System.out.println(s.orElseThrow(() -> new IllegalArgumentException("Not available")));
s.ifPresent(System.out::println);
}
}