Sobes.tech
Junior — Middle

Aký je rozdiel medzi metódami map a flatMap v Java Stream API a aké sú ich vlastnosti použitia?

sobes.tech AI

Odpoveď od AI

Metódy map a flatMap v API Stream Java slúžia na transformáciu prvkov toku, ale fungujú odlišne:

  • map prijíma funkciu, ktorá každý prvok toku prevedie na iný prvok. Výsledkom je tok s rovnakým počtom prvkov, ale iného typu alebo vzhľadu.

  • flatMap prijíma funkciu, ktorá každý prvok prevedie na tok (Stream) prvkov, a následne tieto toky "splošťuje" do jedného spoločného toku. To je užitočné, keď z jedného prvku chcete získať viac prvkov.

Príklad:

List<String> words = Arrays.asList("hello", "world");

// map: prevedieme každé slovo na jeho dĺžku
List<Integer> lengths = words.stream()
    .map(String::length)
    .collect(Collectors.toList()); // [5, 5]

// flatMap: rozdelíme každé slovo na písmená a spojíme všetky písmená do jedného toku
List<String> letters = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]

Použitie:

  • map je vhodný pre jednoduché transformácie prvkov jeden na jedného.
  • flatMap je potrebný, keď z jedného prvku chcete získať viac, a je potrebné "sploštiť" vnorené štruktúry.