Назад к вопросам
IT One
Т-Банк
Junior — Middle
87
Чем отличаются методы map и flatMap в Java Stream API и в чем их особенности использования?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Методы map и flatMap в Java Stream API служат для преобразования элементов потока, но работают по-разному:
-
mapпринимает функцию, которая преобразует каждый элемент потока в один другой элемент. В результате получается поток с таким же количеством элементов, но другого типа или вида. -
flatMapпринимает функцию, которая преобразует каждый элемент в поток (Stream) элементов, а затем объединяет ("сплющивает") все эти потоки в один общий поток. Это полезно, когда из одного элемента нужно получить несколько элементов.
Пример:
List<String> words = Arrays.asList("hello", "world");
// map: преобразуем каждое слово в его длину
List<Integer> lengths = words.stream()
.map(String::length)
.collect(Collectors.toList()); // [5, 5]
// flatMap: разбиваем каждое слово на буквы и объединяем все буквы в один поток
List<String> letters = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]
Особенности использования:
mapподходит для простого преобразования элементов один к одному.flatMapнужен, когда из одного элемента нужно получить несколько, и требуется "сплющить" вложенные структуры.