En Java 8, nous avons la classe Stream <T> , qui a curieusement une méthode
Iterator<T> iterator()
Vous vous attendez donc à ce qu'il implémente l'interface Iterable <T> , qui nécessite exactement cette méthode, mais ce n'est pas le cas.
Quand je veux parcourir un Stream en utilisant une boucle foreach, je dois faire quelque chose comme
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)) { ... }
Est-ce que j'ai râté quelque chose?
Streamaux API héritées qui Iterable
getIterable()return s::iterator;
for (T element : stream::iterator), donc je préférerais toujours que Stream implémente également Iterableune méthode toIterable().