Sobes.tech
Junior — Middle
103

Was ist der Unterschied zwischen den Methoden map und flatMap in der Stream API bei der Verarbeitung von Datenströmen?

Unternehmen wurden gefragt
Ifellow

Antwort von AI

sobes.tech KI

Методы map и flatMap в Stream API служат для преобразования элементов потока, но работают по-разному:

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

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

Пример:

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

// map вернет Stream<List<String>>
Stream<List<String>> stream1 = listOfLists.stream().map(list -> list);

// flatMap вернет Stream<String>
Stream<String> stream2 = listOfLists.stream().flatMap(list -> list.stream());

stream2.forEach(System.out::println); // Выведет a b c d