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.