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为了是一些集合可以返回不同的迭代器。