Uso di stream

di il
2 risposte

Uso di stream

E' possibile convertire questo ciclo usando i filtri di stream?

ArrayList<Planning> entries_for_this_day = new ArrayList<>();
for(Planning d: data) {
      if(d.getDay() == day) {
           entries_for_this_day.add(d);
       }
}
Ho provato con

ArrayList<Planning> entries_for_this_day = data.stream()
                 .filter(d -> d.getDay()==day)
                 .collect(Collectors.toList());
ma mi par che il toList crei liste di oggetti standard (String, Integer,...) e non di oggetti creati dall'utente.

2 Risposte

  • Re: Uso di stream

    morellik ha scritto:


    
    ArrayList<Planning> entries_for_this_day = data.stream()
                     .filter(d -> d.getDay()==day)
                     .collect(Collectors.toList());
    
    Strutturalmente mi pare corretto (non so cosa ritorna getDay() ... un int?). L'unica cosa davvero sbagliata è l'assegnamento ad un ArrayList. Il toList() ha come parametrizzazione di uscita un generico List<T> ... non ArrayList<T>

    morellik ha scritto:


    ma mi par che il toList crei liste di oggetti standard (String, Integer,...) e non di oggetti creati dall'utente.
    No, non è vero questo.
  • Re: Uso di stream

    In effetti hai ragione come sempre. Messo List al posto di ArrayList e funziona perfettamente. Grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte