mam ten kod:W jaki sposób mogę wykonać iterację strumienia w języku Java, używając?
List<String> strings = Arrays.asList("a", "b", "cc");
for (String s : strings) {
if (s.length() == 2)
System.out.println(s);
}
Chcę napisać go za pomocą filtra i lambda:
for (String s : strings.stream().filter(s->s.length() == 2)) {
System.out.println(s);
}
dostaję Can only iterate over an array or an instance of java.lang.Iterable
.
Staram:
for (String s : strings.stream().filter(s->s.length() == 2).iterator()) {
System.out.println(s);
}
I uzyskać ten sam błąd. Czy to możliwe? Naprawdę wolałbym nie robić stream.forEach() i przekazywać konsumenta.
Edycja: ważne jest, aby nie kopiować elementów.
Jeśli użyj 'Stream', po co iterować w pierwszej kolejności? Uwaga: Twój kod może być napisany 'strings.stream(). Filter (s -> s.length() == 2) .forEach (System.out :: println)' – fge
Rzeczywiście mam duży fragment kodu przetwarzającego element i nie chcę go zbyt dużo refaktoryzować, jeśli to możliwe – ytoledano
Po prostu nie refaktoryzuj jeśli działa. Używanie strumieni w celu używania strumieni nie jest sposobem na użycie strumieni: p – fge