Предположим, у вас есть ленивый Iterator
, который вы хотели бы преобразовать в Stream
.Можно предположить, что число элементов в Iterator
конечно.
Можно указать Iterator
пропустить элементы (с помощью метода skip
в реализации), чтобы избежать ненужных элементовгенерация, но все элементы Iterator
должны были быть либо пропущены, либо сгенерированы после того, как для Stream
была вызвана терминальная операция.
Мне известно:
StreamSupport.stream(
Spliterators.spliteratorUnknownSize(
theIterator, Spliterator.ORDERED), false);
для генерации Stream
из Iterator
, однако это не дает возможности пропустить или обеспечить потребление всех элементов.
Существуют ли какие-либо базовые реализации Stream
, которые позволили бы это с помощью разумногопростое расширение?
Делегирование выглядит беспорядочным, учитывая огромное количество методов интерфейса Stream
, без каких-либо обещаний относительно того, какие из них будут вызывать как часть их внутренней реализации, и все реализации JDK, которые можно использовать какотправная точка (по крайней мере в JDK, которую я использую) является частной, и я предполагаю, что для этого есть веские причины (например, они этого не делают).хотите меня расширяя их ...).