Основные отличия между терминальными и промежуточными операциями в потоках Java:
- Промежуточные операции генерируют выходной поток и выполняются только при встрече с терминальной операцией. 2 Они возвращают новый поток и не выполняются немедленно — откладываются до тех пор, пока не будет вызвана терминальная операция. 1
- Терминальные операции завершают выполнение промежуточных операций, а также возвращают окончательные результаты выходного потока. 2 Они могут включать такие действия, как подсчет, сбор в коллекцию, поиск или перебор элементов. 1 После вызова терминальной операции поток больше нельзя использовать повторно — это приведёт к ошибке. 1
Таким образом, промежуточные операции не меняют данные, а только задают логику их изменения, в то время как терминальные операции запускают всю цепь промежуточных операций, закрывают поток и возвращают модифицированные данные. 5