// Created on savesnippets.com · https://savesnippets.com/CTYR3W9xqB38Ni import java.util.*; import java.util.stream.*; class Demo { Optional parseInt(String s) { try { return Optional.of(Integer.parseInt(s)); } catch (NumberFormatException e) { return Optional.empty(); } } void example() { var inputs = List.of("1", "two", "3", "four", "5"); // Old way — filter + get is ugly: // .filter(Optional::isPresent).map(Optional::get) // // Java 9+ — flatMap with Optional::stream List nums = inputs.stream() .map(this::parseInt) .flatMap(Optional::stream) .toList(); System.out.println(nums); // [1, 3, 5] // First non-empty match Optional first = inputs.stream() .map(this::parseInt) .flatMap(Optional::stream) .findFirst(); System.out.println(first); // Optional[1] } }