Как се различават терминалните и нетерминалните операции в API Stream по функции и предназначение?
sobes.tech AI
Отговор от AI
В API за потоци терминалните и нетерминалните операции се различават по предназначение и поведение:
-
Нет терминални операции (intermediate) — това са операции, които връщат нов поток и позволяват изграждането на верига от преобразувания. Те са лениви, тоест не се изпълняват веднага, а само при извикване на терминална операция. Примери:
filter(),map(),sorted(),distinct(). -
Терминални операции (terminal) — завършват веригата от операции и стартират обработката на данните. Връщат резултат (например, колекция, число, void). След терминална операция потокът се счита за затворен и не може да бъде използван повторно. Примери:
collect(),forEach(),reduce(),count().
Пример:
List<String> result = list.stream()
.filter(s -> s.startsWith("A")) // не терминална
.map(String::toUpperCase) // не терминална
.collect(Collectors.toList()); // терминална
Тук филтрирането и преобразуването не се изпълняват веднага, а само при извикване на collect(), което стартира обработката и връща финалния списък.