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?
Stream
aux 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 Iterable
une méthode toIterable()
.