Sobes.tech
Junior — Middle

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

sobes.tech KI

Antwort von AI

Основное различие между методами map и flatMap в Stream API заключается в том, что:

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

Пример:

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

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

// flatMap вернёт Stream<String>, "расплющивая" вложенные списки
Stream<String> streamOfStrings = listOfLists.stream().flatMap(list -> list.stream());

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