Sobes.tech
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]