Sobes.tech
Junior — Middle

Koje su razlike između metoda map i flatMap u Java Stream API i koje su njihove karakteristike korišćenja?

sobes.tech АИ

Одговор од АИ

Metode map i flatMap u Java Stream API služe za transformaciju elemenata toka, ali rade na različite načine:

  • map prihvata funkciju koja svaki element toka pretvara u drugi element. Kao rezultat, dobijamo tok sa istim brojem elemenata, ali drugog tipa ili izgleda.

  • flatMap prihvata funkciju koja svaki element pretvara u tok (Stream) elemenata, a zatim "spljoštava" sve te tokove u jedan zajednički tok. Ovo je korisno kada iz jednog elementa želimo da dobijemo više elemenata.

Primer:

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

// map: pretvaramo svaku reč u njen dužinu
List<Integer> lengths = words.stream()
    .map(String::length)
    .collect(Collectors.toList()); // [5, 5]

// flatMap: delimo svaku reč na slova i spajamo sva slova u jedan tok
List<String> letters = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]

Karakteristike korišćenja:

  • map je pogodan za jednostavne transformacije elemenata jedan na jedan.
  • flatMap je potreban kada iz jednog elementa želimo da dobijemo više, i kada je potrebno "spljoštiti" ugnježdene strukture.