Curiosita sugli stream java

portfolio item name

Se ho una lista di nomi di varia lunghezza è uso il metodo forEach

e voglio ottenere tutti i nomi che hanno lunghezza 5, ci sono due modi per farlo:

  • - sconigliato

  • - best practice

Con i stream bisogna sempre scorere gli stream e produre nuove istance come risultato finale.

Non è consigliato scorre gli stream a cambiare lo stato di un istanza definita fuori da essa.

public static void main(String[] args){
            List<String> filtrati = new ArrayList<>();
            List<String> nomi = Arrays.asList("Pluto", "Paperino");

            // metodo sconsigliato
            nomi.stream()
                .filter(n -> n.length() == 5)
                .forEach(n1 -> {
                    filtrati.add(n1);
                });

            // metodo best practice
            List<String> filtrati2 = nomi.stream()
                    .filter(n -> n.length() == 4)
                    .collect(Collectors.toList());

        }