Sobes.tech
Junior — Middle
78

Care este diferența dintre operațiile flat și flatMap atunci când lucrați cu fluxuri de date sau colecții?

Companiile au fost întrebate
СовкомбанкСовкомбанк

Răspuns de la AI

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).