Junior — Middle
Можете ли да обясните какво означава терминът 'нетерминална операция' при работа с потоци от данни в API Stream?
sobes.tech AI
Отговор от AI
В API за потоци на Java операциите се делят на терминални и нетерминални (междинни).
Не терминалната операция е такава, която връща нов поток (Stream) и не стартира обработката на данните веднага. Тя служи за изграждане на верига от преобразувания, например филтриране, картографиране, сортиране.
Примери за нетерминални операции:
- filter()
- map()
- sorted()
- distinct()
Тези операции са лениви: не се изпълняват, докато не бъде извикана терминална операция, например, forEach(), collect(), count().
Пример:
List<String> list = Arrays.asList("a", "bb", "ccc");
list.stream()
.filter(s -> s.length() > 1) // нетерминална
.map(String::toUpperCase) // нетерминална
.forEach(System.out::println); // терминална
По този начин, нетерминалните операции позволяват да се изгражда верига от преобразувания, а терминалната стартира изпълнението.