Назад к вопросам
Совкомбанк
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).