1
resposta

.

Estou com uma dúvida referente a aula 01 da parte de Equals e mais listas. Quando crio a nova conta cc3, mesmo ela não sendo adicionada na lista, o "existe" retorna sempre true. Gostaria de saber o por quê disso? Tem haver com algum erro de código no método equals da classe Conta? Teste Array List Equals:

package br.com.Bytebank.Banco.Teste.Util;

import java.util.ArrayList;

import br.com.Bytebank.Banco.Modelo.Conta;
import br.com.Bytebank.Banco.Modelo.ContaCorrente;

public class TesteArrayListEquals {

    public static void main(String[] args) {


        //Generics
        ArrayList<Conta> lista = new ArrayList<Conta>();

        Conta cc = new ContaCorrente(22, 11);
        lista.add(cc);

        Conta cc2 = new ContaCorrente(22, 22);
        lista.add(cc2);

        Conta cc3 = new ContaCorrente(22, 22);
        boolean existe = lista.contains(cc3);

        System.out.println("Já existe? " + existe);

        for(Conta conta : lista) {
            System.out.println(conta);

        }


    }

}

Método Equals na classe Conta:

    @Override
    public boolean equals(Object ref) {

        Conta outra = (Conta) ref;

        if(this.agencia != outra.agencia) {
            return false;
        }

        if(this.numero != outra.numero) {
            return false;
        }
        return true;
    }
1 resposta

Boa noite Bowe!

Cara, o seu método equals está comparando o valor dos atributos agencia e numero:

if(this.agencia != outra.agencia)

Então, como o cc2 que vc adicionou é agencia = 22, ele vai dizer que contem um cara igual lá na lista...

Espero ter ajudado!

Não esqueça de por favor, marcar sua pergunta como solucionada para eu receber seu feedback beleza!?

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software