Ho questo codice:Come si esegue iterazione su uno streaming in Java usando?
List<String> strings = Arrays.asList("a", "b", "cc");
for (String s : strings) {
if (s.length() == 2)
System.out.println(s);
}
voglio scrivere utilizzando un filtro e un lambda:
for (String s : strings.stream().filter(s->s.length() == 2)) {
System.out.println(s);
}
ottengo Can only iterate over an array or an instance of java.lang.Iterable
.
cerco:
for (String s : strings.stream().filter(s->s.length() == 2).iterator()) {
System.out.println(s);
}
e ottengo lo stesso errore. È possibile? Preferirei davvero non eseguire stream.forOach() e passare un consumatore.
Modifica: è importante per me non copiare gli elementi.
Se utilizzare un 'Stream', perché iterare in primo luogo? Nota: il tuo codice può essere scritto 'strings.stream(). Filter (s -> s.length() == 2) .forEach (System.out :: println)' – fge
In realtà ho una grossa fetta di codice che elabora il codice elemento e non voglio refactoring troppo se possibile – ytoledano
Quindi non refactoring se funziona. Usare gli stream per il gusto di usare gli stream non è il modo di usare gli stream: p – fge