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:
-
mapprijí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. -
flatMapprijí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:
mapje vhodný pre jednoduché transformácie prvkov jeden na jedného.flatMapje potrebný, keď z jedného prvku chcete získať viac, a je potrebné "sploštiť" vnorené štruktúry.