1
resposta

contains utilizando o equals não funciona

Olá pessoal. alguém poderia me dar uma ajudinha? chamei o método contains utilizando o ArrayList e também sobescrevendo o método Equals. Contudo agora tudo responde como true.

public abstract class Conta extends Object { 
//codigo recortado
//igualdade utilizando contains
@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;
}
}

classe teste:

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 TesteEquals {
public static void main (String []args) {
    ArrayList<Conta> lista = new ArrayList<Conta>();
Conta cc1 = new ContaCorrente(98, 15, 1000);
Conta cc2 = new ContaCorrente(16, 54, 1000023);
Conta cc3 = new ContaCorrente(23, 11, 2345);
lista.add(cc1);
lista.add(cc2);
lista.add(cc3);
boolean existe = lista.contains(cc3);
System.out.println(existe);
for (Conta c : lista) {
    System.out.println(c);
}

}
}

Como podemos verificar, as contas estão diferentes, número e agencia, mas continua dando true... porém, quando testo com o método equals direto sobrescrito ele funciona apresentando false.

1 resposta

Oi Gisele, pelo que estou entendendo o cc3 está dentro da lista, ou seja, deve dar true (pois já tem uma conta com essa agencia e numero). ok?

abs

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