Utilizzo degli stream

di il
2 risposte

Utilizzo degli stream

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

  • Re: Utilizzo degli stream

    Vengono scartati.

    Comunque, da dove salta fuori quel "distinctByKey" ??

    Beccato!

    https://www.baeldung.com/java-streams-distinct-b
  • Re: Utilizzo degli stream

    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