Найти тему
DEBAGanov

Java 1271. Какие отличия между методами map и flatMap?

1271. Какие отличия между методами map и flatMap?

В Java методы map() и flatMap() используются в контексте Stream API для обработки коллекций. Основное различие между двумя методами заключается в следующем:

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

Другими словами, map() преобразует каждый элемент потока в другой элемент, а flatMap() преобразует каждый элемент в поток элементов, а затем объединяет все потоки в один поток.

Вот пример использования map() для преобразования списка строк в список их длин:

List<String> strings = Arrays.asList("foo", "bar", "baz");
List<Integer> lengths = strings.stream().map(String::length).collect(Collectors.toList());

А вот пример использования flatMap() для извлечения отдельных слов из списка предложений:

List<String> sentences = Arrays.asList("hello world", "foo bar", "baz qux");
List<String> words = sentences.stream().flatMap(s -> Stream.of(s.split(" "))).distinct().collect(Collectors.toList());

В этом примере flatMap() используется для разделения каждого предложения на поток слов, которые затем объединяются в один поток. Метод distinct() используется для удаления дубликатов из результирующего потока.

1606 вопрос-ответ по Java

Курс Spring Framework

Tелеграмм каналDEBAGanov

Мое резюмеDEBAGanov