Sobes.tech
Назад к вопросам
Senior
5

Чем отличается map от flatMap в Stream API?

Компании, где спрашивали
SSP Soft

Ответ от нейросети

sobes.tech AI

В Stream API Java:

  • map преобразует каждый элемент потока в один другой элемент. Результат — поток с таким же количеством элементов.

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

Пример:

List<String> words = List.of("hello", "world");

// map: преобразуем каждое слово в массив букв
List<String[]> mapped = words.stream()
    .map(word -> word.split(""))
    .collect(Collectors.toList());

// flatMap: преобразуем каждое слово в поток букв и объединяем в один поток
List<String> flatMapped = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList());

System.out.println(mapped.size()); // 2
System.out.println(flatMapped.size()); // количество букв всех слов

Таким образом, flatMap удобен для работы с вложенными структурами и для "расплющивания" потоков.