Есть следующий List<String>:
List<String> arrList = Arrays.asList("небо", "земля", "облако", "космос", "звезда", "галактика");
Создав поток stream, отфильтруем элементы (слова) с длиною меньше 6 символов, например, и подсчитаем количество этих элементов.
long count = arrList.stream().filter(w -> w.length() > 6).count();
В каком порядке реально выполняются операции filter() и count()? В том же в каком они следуют в данном выражении?
Порядок выполнения операций над стримами не изменяется. Но стоит учитывать, что операции делятся на два типа:
Разница между первым и вторым типами заключается во времени выполнения. Т.е. промежуточные операции ленивы, и они будут вычисляться только лишь после дальнейшего вызова конечной операции.
Более подробнее здесь.
Порядок потоковых операций не соответствует тому порядку в котором они (операции) вызываются в потоках ввода-вывода. Сначала в методе count() запрашивается первый элемент, затем в методе filter() начинается опрашивание элементов до тех пор, пока не будет найден элемент длиной меньше 6 букв.
Источник: Кей С. Хорстманн - Java SE 8. Вводный курс
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости