Stream API'dagi terminal va terminal bo'lmagan operatsiyalar qanday farq qiladi, ularning funksiyalari va maqsadlari bo'yicha?
sobes.tech AI
AIdan javob
Stream API-da terminal va no-terminal operatsiyalar maqsadi va xulq-atvori bo'yicha farq qiladi:
-
No-terminal operatsiyalar (intermediate) — yangi oqimni qaytaradigan va transformatsiyalar zanjirini qurishga imkon beradigan operatsiyalar. Ular kechiktirilgan, ya'ni darhol bajarilmaydi, faqat terminal operatsiya chaqirilganda bajariladi. Misollar:
filter(),map(),sorted(),distinct(). -
Terminal operatsiyalar (terminal) — operatsiyalar zanjirini yakunlaydi va ma'lumotlarni qayta ishlashni boshlaydi. Natija qaytaradi (masalan, to'plam, raqam, void). Terminal operatsiyadan so'ng oqim yopiladi va uni qayta ishlatib bo'lmaydi. Misollar:
collect(),forEach(),reduce(),count().
Misol:
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // no-terminal
.map(String::toUpperCase) // no-terminal
.collect(Collectors.toList()); // terminal
Bu yerda filtrlash va transformatsiya darhol bajarilmaydi, balki collect() chaqirilganda boshlanadi va yakuniy ro'yxatni qaytaradi.