Java 8では、クラスStream <T>があり、奇妙なことにメソッドがあります
Iterator<T> iterator()
そのため、このメソッドを必要とするIterable <T>インターフェースの実装が期待されますが、そうではありません。
foreachループを使用してストリームを反復処理する場合は、次のようにする必要があります
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
、期待するレガシーAPI に渡すために必要ですIterable
getIterable()
するreturn s::iterator;
for (T element : stream::iterator)
ので、StreamもIterable
メソッドまたはメソッドを実装するのがよいと思いtoIterable()
ます。