Sobes.tech
Junior — Middle

Stream API-də terminal və qeyri-terminal əməliyyatlar funksiyaları və məqsədləri baxımından necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

Stream API-də terminal və qeyri-terminal əməliyyatlar məqsəd və davranış baxımından fərqlənir:

  • Qeyri-terminal əməliyyatlar (intermediate) — yeni axın qaytaran və çevirmə zənciri qurmağa imkan verən əməliyyatlar. Onlar tənbəldir, yəni dərhal yerinə yetirilmir, yalnız terminal əməliyyat çağırıldıqda icra olunur. Nümunələr: filter(), map(), sorted(), distinct().

  • Terminal əməliyyatlar (terminal) — əməliyyatlar zəncirini tamamlayır və məlumatların emalını başlatır. Nəticə qaytarır (məsələn, kolleksiya, ədəd, void). Terminal əməliyyatdan sonra axın bağlanır və onu yenidən istifadə etmək olmaz. Nümunələr: collect(), forEach(), reduce(), count().

Nümunə:

List<String> result = list.stream()
    .filter(s -> s.startsWith("A"))   // qeyri-terminal
    .map(String::toUpperCase)           // qeyri-terminal
    .collect(Collectors.toList());     // terminal

Burada filtrləmə və çevirmə dərhal yerinə yetirilmir, yalnız collect() çağırıldıqda başlanır və yekun siyahı qaytarılır.