Можете объяснить, что такое метод flatMap и как он отличается от map?

Метод map применяется к коллекции и преобразует каждый элемент, возвращая новую коллекцию с элементами, соответствующими результатам функции.

Короткий ответ

Что ответить на собеседовании

Метод map применяется к коллекции и преобразует каждый элемент, возвращая новую коллекцию с элементами, соответствующими результатам функции.

Подробный разбор

Ответ с пояснениями

Метод map применяется к коллекции и преобразует каждый элемент, возвращая новую коллекцию с элементами, соответствующими результатам функции.

flatMap сначала применяет функцию, которая возвращает коллекцию (или поток) для каждого элемента, а затем "сплющивает" (flatten) все эти коллекции в один общий поток или список.

Пример на Java с потоками:

List<List<String>> list = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d")
);

// map вернет Stream<List<String>>
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap вернет Stream<String>
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped можно собрать в один список
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Таким образом, flatMap удобен, когда функция возвращает вложенные коллекции, и нужно получить плоскую структуру.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее