Преобразование значения через map в Java
Метод map принимает функцию и, если значение
есть, передает его внутрь. Результат снова упаковывают
в Optional. Пустой контейнер остается пустым,
функция не вызывается.
Так меняют тип и форму данных без if:
import java.util.Optional;
Optional<String> raw = Optional.of(" java ");
Optional<String> trimmed = raw.map(String::trim);
Optional<Integer> len = trimmed.map(String::length);
System.out.println(len.get());
Если исходная строка отсутствует, цепочка map
не упадет на trim: каждый шаг просто
пропускает пустоту дальше.
Функция в map не должна возвращать
Optional. Для этого есть flatMap,
иначе получится вложенный контейнер.
Из контейнера со строкой "10" получите
контейнер с числом. Выведите число, а для пустого
контейнера выведите -1.