Разница между методами map() и flatMap() в классе Optional заключается в их назначении и поведении:
- map() позволяет преобразовать текущее значение с помощью переданной функции, после чего оборачивает получившийся результат в Optional. 2 Если объект присутствует, переданная функция преобразует его, а результат оборачивается в новый Optional. 3 Если объект отсутствует, возвращается пустой контейнер. 3
- flatMap() также преобразует значение, однако функция, которую он ожидает в качестве аргумента, должна возвращать Optional. 2 Это позволяет избежать создания вложенных Optional. 2 Если функция, переданная в map(), возвращает Optional, flatMap() «распаковывает» вложенные контейнеры. 3
Таким образом, map() подходит для простых преобразований значения внутри Optional, а flatMap() — для работы с вложенными Optional и более сложными структурами данных. 1