Junior — Middle
143
Was sind die Unterschiede zwischen den Methoden map und flatMap in der Java Stream API und was sind ihre Besonderheiten bei der Verwendung?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Методы 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нужен, когда из одного элемента нужно получить несколько, и требуется "сплющить" вложенные структуры.