Sobes.tech
Junior — Middle

Java Stream API-da map va flatMap metodlari qanday farq qiladi va ularning foydalanish xususiyatlari qanday?

sobes.tech AI

AIdan javob

Java Stream API'da map va flatMap metodlari oqim elementlarini o'zgartirish uchun xizmat qiladi, ammo ular turli tarzda ishlaydi:

  • map har bir elementni boshqa elementga o'zgartiradigan funktsiyani qabul qiladi. Natijada, shunchaki elementlar soni bir xil bo'lgan, ammo turli tur yoki ko'rinishga ega oqim hosil bo'ladi.

  • flatMap har bir elementni elementlar oqimiga (Stream) aylantiradigan funktsiyani qabul qiladi va keyin bu oqimlarni ("yassi") umumiy oqimga birlashtiradi. Bu, bir elementdan bir nechta element olish kerak bo'lsa, foydalidir.

Misol:

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

// map: har bir so'zni uning uzunligiga o'zgartiramiz
List<Integer> lengths = words.stream()
    .map(String::length)
    .collect(Collectors.toList()); // [5, 5]

// flatMap: har bir so'zni harflarga bo'lib, barcha harflarni bir oqimga birlashtiramiz
List<String> letters = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]

Foydalanish xususiyatlari:

  • map oddiy elementlar uchun mos keladi.
  • flatMap bir elementdan bir nechta element olish kerak bo'lsa va ichma-ich tuzilmalarni "yassi" qilish zarur bo'lsa, ishlatiladi.