Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Retirar duplicados de um array de bojetos Java

Pessoal boa tarde, tenho um problema aqui e não estou conseguindo solucionar algo que acho que é simples.

Tenho uma lista de objeto Pessoa, exemplo:

1, fabio, 29

2, lais, 30

3, joao, 18

4, fabio, 29

eu quero que remover o fabio id: 4, ou 1, não me importa qual deles remova desde que remova um deles.

Não consegui usar o Set< Pessoa> p = new HashSet<>(); pois eles não são exatamente identicos pelo fato do id ser diferente, então eu preciso de alguma coisa que valide se dentro da list tem duplicado por nome, idade.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas
solução!

Boa tarde Fabio.

Uma das formas de resolver é utilizando o Set que você comentou e sobreescrevendo o método equals e hashcode do objeto Pessoa.

    @Override
    public boolean equals(Object o) {
        Pessoa comparing = (Pessoa) o;
        if(Integer.compare(this.getAge(), comparing.getAge()) == 0
            && this.getName().contentEquals(comparing.getName())) {
            return true;
        }
        return false;
    }

    //O ideal é sobreescrever para considerar os pontos de comparação.
    @Override
    public int hashCode() {
          return 0;
    }
        List<Pessoa> pessoas = new ArrayList<>();

        pessoas.add(new Pessoa(1, "fabio", 29));
        pessoas.add(new Pessoa(1, "fabio", 29));
        pessoas.add(new Pessoa(1, "joao", 29));

        Set<Pessoa> filtrados = new HashSet<>();
        filtrados.addAll(pessoas);

        filtrados.forEach(pessoa -> System.out.println(pessoa.getName()));

Nuu, deu super certo Fernanda.

Muito obrigado.