Ci sono dei vantaggi nell'utilizzo della nuova API Stream per semplici iterazioni?Devo usare Stream API per una semplice iterazione?
Senza API Stream:
for (Map.Entry<String, String> entry : map.entrySet()) {
doSomething(entry);
}
Utilizzando API Stream:
map.entrySet().stream().forEach((entry) -> {
doSomething(entry);
});
lunghezza e la leggibilità del codice sono circa lo stesso. Ci sono delle differenze importanti (ad es. Nelle prestazioni)?
Flussi dovrebbe essere usato se può rendere il codice più breve * e * più leggibile . Quindi il tuo caso d'uso non è un buon esempio da solo. Tuttavia, se si utilizza il metodo 'map.forEach' stesso, allora vi è un certo punto nell'utilizzo di lambdas, ma poi di nuovo, non si stanno più utilizzando flussi in quel punto. – skiwi
Lo stesso vale per entrySet; puoi dire 'map.entrySet(). forEach (...)' senza la necessità di un flusso. Nel caso di una singola chiamata di metodo, la forma 'map.entrySet(). ForEach (context :: doSomething);' è preferibile a un'espressione lambda in quanto è * veramente * più breve e più leggibile. Quindi, se hai un * metodo * esistente 'doSomething 'che prende una singola istanza di voce o due parametri che corrispondono a chiave e valore, allora c'è un punto nell'usare' forEach (...) '. – Holger
Inoltre, anche se lo si scrive in questo modo, non sono necessarie le parentesi nel secondo esempio. Penso che sia più leggibile in questo modo ... – Veluria