Iterator<T> iterator()
您会期望它实现接口Iterable<T>,该接口需要正好这个方法,但事实并非如此。
当我想使用foreach循环迭代Stream时,我必须执行类似以下的操作
public static Iterable<T> getIterable(Stream<T> s) {
return new Iterable<T> {
@Override
public Iterator<T> iterator() {
return s.iterator();
}
};
}
for (T element : getIterable(s)) { ... }
我在这里漏掉了什么吗?
Stream
传递给期望Iterable
的旧API,因此需要返回已翻译的文本。 - ZhongYugetIterable()
函数中的代码,使其变为return s::iterator;
。 - ZhongYufor (T element : stream::iterator)
,所以我仍然希望Stream也能实现Iterable
或一个名为toIterable()
的方法。 - Thorsten