Middle
Java ning yangi versiyasida oqimlar nima uchun ishlatiladi?
sobes.tech AI
AIdan javob
Java 8+ daftarlari ketma-ket ma'lumotlarni deklarativ tarzda qayta ishlash uchun ishlatiladi. Ular kolleksiyalar (ro'yxatlar, to'plamlar), massivlar yoki boshqa ma'lumot manbalariga funksional operatsiyalarni quvurlar uslubida bajarishga imkon beradi.
Dasturda foydalanishning asosiy afzalliklari:
- Deklarativ uslub: "Nima" qilish kerakligini, "qanday" emas, tavsiflash imkonini beradi. Bu kodni o'qilishi oson va tushunarli qiladi.
- Lazily hisoblash: Operatsiyalar faqat kerak bo'lganda bajariladi, bu katta ma'lumotlar bilan ishlaganda samaradorlikni oshirishi mumkin.
- Parallel ishlov berish: Strimlar osonlik bilan parallelga o'tkazilishi mumkin (
parallelStream()yordamida), bu ko'p yadroli protsessorlardan samarali foydalanishni ta'minlaydi. - Shablon kodni kamaytirish: An'anaviy sikllar va iteratorlarni ko'proq ifodali va qisqa tuzilmalar bilan almashtiradi.
- Noto'g'riligi: Strimlar asl ma'lumot manbasini o'zgartirmaydi.
Ko'p ishlatiladigan operatsiyalar misollari:
- Filtrlash:
filter()- shartga mos elementlarni tanlash. - Transformatsiya (mapping):
map()- har bir elementni o'zgartirish. - Sortlash:
sorted()- elementlarni tartiblash. - Unikal elementlar:
distinct()- takrorlarni olib tashlash. - Guruhlash:
collect(Collectors.groupingBy(...))- elementlarni belgilangan xususiyat bo'yicha guruhlash. - Statistika/Aggregatsiya:
count(),sum(),average(),max(),min(),reduce()- yig'ish operatsiyalari. - Natijalarni kolleksiyaga yig'ish:
collect(Collectors.toList()),collect(Collectors.toSet())- natijalarni kolleksiyaga yig'ish.
Foydalanish misoli:
// Strim yordamida satrlar ro'yxatini filtrlash va o'zgartirish
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filteredNames = names.stream() // Ro'yxatdan strim yaratish
.filter(name -> name.startsWith("A")) // Filtrlash: faqat "A" bilan boshlanuvchi nomlar
.map(String::toUpperCase) // O'zgartirish: har bir nomni katta harfga o'tkazish
.collect(Collectors.toList()); // Natijani yangi ro'yxatga yig'ish
System.out.println(filteredNames); // Chiqqisi: [ALICE]