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

Contains sem adicionar na lista?

O facilitador instancia duas contas: ArrayList lista = new ArrayList();

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

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

Aí instancia mais uma e não adiciona na lista, mas pede um contains, dessa conta.

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

Faz sentido perguntar se cc3 está contida mesmo sem tê-la adicionado a lista?

2 respostas
solução!

Oi Robson, tudo bem?

O motivo para checar a existência da cc3 dentro da lista mesmo sem tê-lo adicionado antecipadamente é para mostrar que mesmo a cc3 tendo o mesmo número e agência que a cc2, o método não encontra nada! Sendo que em um caso real, duas contas com a mesma agencia e número não deveriam existir, já que elas representariam a mesma conta dentro do negócio.

O que acontece é que o contains() usa o método equals() internamente para fazer as comparações e descobrir se um elemento está contido ou não dentro da lista, porém essa comparação, por padrão, é feita através dos endereços dos objetos e não através da agencia e número como é feita na vida real. E é aí que devemos alterar o equals() para que ele deixe de comparar o endereço do objeto e passe a comparar a agencia e o número da conta.

Espero ter ajudado, se ficou qualquer dúvida é só avisar!

Bons estudos!!

Perfeito! Obrigado,