Junior
Java'da Stream API ning asosiy g'oyasi nima?
sobes.tech AI
AIdan javob
Stream API ning asosiy g'oyasi ma'lumotlar to'plamlarini ishlash uchun deklarativ usulni taqdim etishdir. Imperativ takrorlash yondashuvi o'rniga, oqimlar (streams) ma'lumotlar bilan nima qilish kerakligini (filtrlash, transformatsiya qilish, yig'ish) tavsiflashga imkon beradi, qanday qilishni esa API da qoldiradi.
Asosiy tushunchalar:
- O'zgarmaslik: Oqimlar asl ma'lumot manbasini o'zgartirmaydi. Oqim operatsiyalari yangi oqimlar yoki natijalar yaratadi.
- Lazily evaluation: Ko'plab oqim operatsiyalari, masalan,
filter()vamap(), oraliq operatsiyalar hisoblanadi. Ular,collect()yokiforEach()kabi terminal operatsiya chaqirilgunga qadar bajarilmaydi. Bu bajarishni optimallashtirish imkonini beradi. - Kuyruk (Pipeline): Oqim operatsiyalari ketma-ket yoki parallel ravishda kuyruqqa birlashtirilishi mumkin. Har bir element ketma-ket yoki parallel ravishda kuyruq orqali o'tadi.
- Parallel ishlov berish: Oqimlar ma'lumotlarni osonlik bilan parallel ravishda ishlash uchun mo'ljallangan, ko'pincha minimal kod o'zgarishlari bilan (
parallelStream()).
Afzalliklar:
- Koleksiyalar bilan murakkab operatsiyalar uchun ko'proq o'qilishi oson va ifodali kod.
- Parallellashni osonlashtiradi.
- Iteratsiyalar bilan bog'liq boilerplate kodni yo'q qiladi.
// Misol: String ro'yxatini filtrlash va transformatsiya qilish
List<String> nomlar = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<Integer> uzunliklar = nomlar.stream()
.filter(nom -> nom.startsWith("A")) // Oraliq operatsiya
.map(String::length) // Oraliq operatsiya
.collect(Collectors.toList()); // Terminal operatsiya
// uzunliklar [5] ni o'z ichiga oladi