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 |