Utilizzo degli stream

di Anonimizzato27934 il
2 risposte
Ciao, premesso che non potrò usare il pc per un paio di giorni, guardando il codice ho un dubbio sull'utilizzo degli stream per ottenere una nuova lista andando a fare una distinct su una proprietà dell'oggetto.

il servizio recupera una lista di oggetti "Account", la classe è del tipo:
public class Account{
private String code;
private String nome;
private String cognome;

//getter & setter
}
Ottenuta la myList, che comprende ad esempio tre oggetti:
1) code: 01, nome: giovanni, cognome: rana
2) code 02, nome: valentino, cognome: rossi
3) code 02, nome: alberto, cognome: tomba

si passa a questa operazione:
  response= myList.stream().filter(distinctByKey(Account::getCode)).collect(Collectors.toList());
Ma la lista "response" quali dei tre elementi conterrà? Direi sicuro il 1 ossia giovanni rana, ma gli altri due, avendo lo stesso code, che fine faranno?

2 Risposte

  • Test90 ha scritto:


      response= myList.stream().filter(distinctByKey(Account::getCode)).collect(Collectors.toList());
    ma gli altri due, avendo lo stesso code, che fine faranno?
    Quello è un filter "stateful", il Predicate restituito da quel distinctByKey mantiene uno stato e si "ricorda" gli oggetti per il code per fungere appunto da "distinct".

    Quindi valentino lo tiene mentre alberto che ha lo stesso code invece lo scarta.
Devi accedere o registrarti per scrivere nel forum
2 risposte