Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpOpFM 31 of 322 menu
◀ ▶

Преобразование через flatMap в Java

Иногда функция сама возвращает Optional: поиск по ключу, разбор строки, шаг цепочки репозиториев. map дал бы тип Optional<Optional<T>>. flatMap «разворачивает» один уровень и оставляет один контейнер.

Поиск города по коду страны и коду города:

import java.util.Optional; Optional<String> findCountry(String code) { return "RU".equals(code) ? Optional.of("Russia") : Optional.empty(); } Optional<String> findCity(String country, String cityCode) { if ("Russia".equals(country) && "SPB".equals(cityCode)) { return Optional.of("Saint Petersburg"); } return Optional.empty(); } Optional<String> cityName(String countryCode, String cityCode) { return findCountry(countryCode) .flatMap(country -> findCity(country, cityCode)); }

Если страна не найдена, flatMap не зовет поиск города. Если страна есть, но город нет, наружу уходит пустой контейнер без вложенности.

Метод Optional<String> upper(Optional<String> s) возвращает пустой контейнер для пустого входа, иначе контейнер со строкой в верхнем регистре. Обработайте контейнер со строкой "hi" и выведите значение или "?".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить