Sobes.tech
Junior — Middle

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.