Stream 与 Iterable 的转换

iterator 转 stream

public static <T> Stream<T> getStream(Iterable<T> Iterable) {
	return StreamSupport.stream(Iterable.spliterator(), false);
}

stream 转 iterator

public static <T> Iterable<T> getIterable(Stream<T> stream) {
	return Stream::iterator;
}

接下来看一下Iterable接口

public interface Iterable<T> {
    /**
     * Returns an iterator over elements of type {@code T}.
     *
     * @return an Iterator.
     */
    Iterator<T> iterator();

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }
}

里面是一个Iterator,而Lists类本身继承Collection,而Collection extends Iterable为了是一些集合可以返回不同的迭代器。


版权声明:本文为weixin_45229417原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。