Sobes.tech
Middle

map va flatMap operatsiyalari o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

map o'zgartiradi har bir elementni yangi elementga, va qaytaradi, ayni elementlar soniga ega oqim.

flatMap har bir elementni elementlar oqimiga o'zgartiradi, so'ngra bu ichki oqimlarni bitta tekis oqimga birlashtiradi. Bu, agar bir elementning o'zgartirilishi bir nechta elementga olib keladigan holatlarda ishlatiladi.

Misol:

Faraz qilaylik, bizda satrlar ro'yxati ro'yxati bor: List<List<String>> listOfLists.

map dan foydalanish:

// Har bir satrlar ro'yxatini uning o'lchamiga o'zgartiradi
listOfLists.stream()
           .map(list -> list.size())
           .forEach(System.out::println);
// Har bir ichki ro'yxatning o'lchamini chiqaradi: 2, 3, 1 va boshqalar.

flatMap dan foydalanish:

// Har bir satrlar ro'yxatini satr oqimiga aylantiradi
// va ularni (yassi) birlashtiradi, barcha satrlarni bitta oqimga aylantiradi
listOfLists.stream()
           .flatMap(list -> list.stream())
           .forEach(System.out::println);
// Barcha ichki ro'yxatlardagi satrlarni chiqaradi: "a", "b", "c", "d", "e"...

Taqqoslash jadvali:

Operatsiya Kirish O'zgartirish Chiqish Maqsad
map Stream<T> T -> R Stream<R> Har bir elementni o'zgartirish
flatMap Stream<T> T -> Stream<R> Stream<R> Har bir elementni oqimga aylantirish va birlashtirish