Sobes.tech
Junior — Middle
89

Ποια είναι η διαφορά μεταξύ των λειτουργιών flat και flatMap κατά την εργασία με ροές δεδομένων ή συλλογές;

Εταιρείες όπου ρωτήθηκαν
СовкомбанкСовкомбанк

Απάντηση από 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).