Я пытаюсь отфильтровать отсортированный поток, используя takeWhile из java9, чтобы получить объекты из начала потока, которые имеют одинаковое значение для поля. Я не могу написать правильный предикат для этого. Это можно сделать, используя два шага, нарушая конвейер потока.
Stream.of(objA, objB, objC, objD, objE, objF, objG)
.takeWhile(" get the value of objA´s field and take
as long as as other objects value for that field is the same as objA´s");
В два шага я мог бы сделать что-то вроде
int x = Stream.of(objA, objB, objC, objD, objE, objF, objG).findFirst().get().getSomeValue();
Stream.of(objA, objB, objC, objD, objE, objF, objG).takeWhile(e -> e.getSomeValue() == x);
Упрощенный пример может быть
Stream.of(5,5,5,5,13,14,5,5,2,5,5,6)
.takeWhile(get the first four '5'´s)
Можно ли это сделать без промежуточного шага, используя option.get?