Sobes.tech
Назад к вопросам
Junior — Middle
64

Чем отличаются операции flat и flatMap при работе с потоками данных или коллекциями?

Компании, где спрашивали
СовкомбанкСовкомбанк

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

sobes.tech AI

Операции flat и flatMap часто используются при работе с коллекциями или потоками данных для упрощения вложенных структур.

  • flat — преобразует коллекцию коллекций в плоскую коллекцию, объединяя все вложенные элементы в один уровень. Например, из List<List<T>> получается List<T>.

  • flatMap — сначала применяет функцию к каждому элементу коллекции, которая возвращает коллекцию, а затем объединяет все полученные коллекции в одну плоскую.

Пример на Java с потоками:

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

// flat
List<String> flatList = listOfLists.stream()
    .flatMap(Collection::stream)
    .collect(Collectors.toList());
// flatList: ["a", "b", "c", "d"]

// flatMap с преобразованием
List<String> flatMapped = listOfLists.stream()
    .flatMap(list -> list.stream().map(String::toUpperCase))
    .collect(Collectors.toList());
// flatMapped: ["A", "B", "C", "D"]

Таким образом, flatMap сочетает в себе операцию отображения (map) и последующего объединения (flat).