Volevo scrivere una funzione pura con Java 8 che prendesse una raccolta come argomento, applicasse alcune modifiche a ogni oggetto di quella raccolta e restituisse una nuova raccolta dopo l'aggiornamento. Voglio seguire i principi FP quindi non voglio aggiornare/modificare la collezione che è stata passata come argomento.Java 8 modifica elementi stream
Esiste un modo per farlo con Stream API senza prima creare una copia della raccolta originale (e quindi utilizzando forEach o "normale" per loop)?
oggetto del campione qui sotto e lascia supporre che voglio per aggiungere un testo a una delle proprietà dell'oggetto:
public class SampleDTO {
private String text;
}
Quindi voglio fare qualcosa di simile al di sotto, ma senza modificare la raccolta. Supponendo che "elenco" è un List<SampleDTO>
.
list.forEach(s -> {
s.setText(s.getText()+"xxx");
});
Direi che questo va un po 'contro il principio della programmazione funzionale qui. L'idea è di non mutare lo stato, ma creare un nuovo stato come prodotto della funzione. Ecco perché, invece di modificare l'elenco originale, dovresti utilizzare la funzione 'map' fornita dall'API Java stream per creare un nuovo elenco. – christopher