in Java 8, betrachten java.util.stream.Stream#forEach
als Ersatz für traditionelle for-Schleife. Aber warum nicht das ist nicht Kettenfunktion. Sagt, dass es void statt Stream<T>
es selbst zurückgibt.Warum nicht Kette java.util.stream.Stream # forEach
Gefallen Sie diesen
Arrays
.stream(Girls.toArray())
.forEach(Girls::getUp)
.forEach(Girls::dressUp)
.filter(/* Top 10 Girls */)
.forEach(Gay.getMe()::gotGirl)
.endFilter()// Not an API, but it means remove last filter
.filter(/* Worst 10 Girls */)
.forEach(Gay.get(0)::gotGirl)
girls = Arrays
.stream(Girls.toArray());
girls.forEach(g->{g.getUp();g.dressUp()});
girls.filter(/* Top 10 Girls */)
.forEach(Gay.getMe()::gotGirl);
girls.filter(/* Worst 10 Girls */)
.forEach(Gay.get(0)::gotGirl);
Die erste ist schön, als zweiten one.But der erste schlechte Performance.
Also, warum ist forEach
nicht verkettbar?
Beachten Sie jedoch, dass in 'peek Nebenwirkungen()' oder 'Karte()' Verhaltensparameter, die mit der Quelle oder stören könnten Auswirkungen auf das Ergebnis anderer Stream-Operationen, ist ein No-No. Die 'peek()' Methode ist wirklich nur zum Debuggen/Loggen da, nicht um das Ergebnis zu berechnen; In ähnlicher Weise sollte 'map()' nur zum Transformieren und nicht zum Verbergen von Nebenwirkungen verwendet werden. –