Sobes.tech
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
IT OneIT One
Т-БанкТ-Банк

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 нужен, когда из одного элемента нужно получить несколько, и требуется "сплющить" вложенные структуры.