In java 8, java.util.stream.Stream#forEach
considerare come sostituzione per il ciclo tradizionale. Ma perché non si tratta di una funzione a catena. Restituisce non valida invece di Stream<T>
autonomamente.Perché non concatenare java.util.stream.Stream # forEach
Ti piace questa
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);
Il primo è bello che secondo one.But il primo ha ottenuto performance peggiore.
Quindi, perché forEach
non è concatenabile?
Tuttavia, si noti che hanno effetti collaterali in 'peek()' o 'mappa()' parametri comportamentali che possono interferire con la fonte, o influire sul risultato di altre operazioni di streaming, è un no-no. Il metodo 'peek()' è davvero lì solo per il debug/logging, non per calcolare il risultato; allo stesso modo, 'map()' dovrebbe essere usato solo per la trasformazione, non per nascondere gli effetti collaterali. –