Предположим, вы хотите передать элементы итератора; позвольте использовать конкретный пример Scanner
, который реализует Iterator<String>
.
Учитывая Iterator
, скажем:
// Scanner implements Iterator<String>
Iterator<String> scanner = new Scanner(System.in);
Опции для создания Stream<String>
от него являются неуклюжими:
StreamSupport.stream(
Spliterators.spliteratorUnknownSize(scanner, Spliterator.ORDERED), false);
или немного более кратким, но тупым:
StreamSupport.stream(
((Iterable<String>) () -> new Scanner(System.in)).spliterator(), false);
Есть ли способ factory где-то в JDK, который возвращает a Stream<T>
с учетом Iterator<T>
?