Так как еще один ответ упоминал, что Guava поддерживает это, используя:
Streams.stream(iterable);
Я хочу подчеркнуть, что реализация делает что-то немного отличное от других предложенных ответов. Если Iterable
имеет тип Collection
, они бросают его.
public static <T> Stream<T> stream(Iterable<T> iterable) {
return (iterable instanceof Collection)
? ((Collection<T>) iterable).stream()
: StreamSupport.stream(iterable.spliterator(), false);
}
public static <T> Stream<T> stream(Iterator<T> iterator) {
return StreamSupport.stream(
Spliterators.spliteratorUnknownSize(iterator, 0),
false
);
}