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

Dúvida no Ex. 17 da Aula 5 - Collections framework

Rodei o programa de teste, sem erros mas o size do objeto contas sempre fica 1. Qual o problema como meu código?

public abstract class Conta {

    protected double saldo;
    private int numero;
    private String nome;

    @Override
    public String toString() {
        return "esse objeto é uma conta com saldo R$" + this.saldo;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 59 * hash + this.numero;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Conta other = (Conta) obj;
        return this.numero == other.numero;
    }



    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

    protected double getSaldo() {
        return this.saldo;
    }

    public void deposita(double valor) throws ValorInvalidoException {

        if (valor < 0) {
            throw new ValorInvalidoException("Não é possível depositar valor negativo");
        } else {
            this.saldo += valor - 0.10;
        }

    }

    public void saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
        }
    }

    public abstract void atualiza(double taxaSelic);

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}


import java.util.HashSet;


 public class TestaHashSetDeConta {

            public static void main(String[] args) {
                HashSet<Conta> contas = new HashSet<>();

                ContaCorrente c1 = new ContaCorrente(123, "Mauricio");
                ContaCorrente c2 = new ContaCorrente(123, "Adriano");
                ContaCorrente c3 = new ContaCorrente(444, "Luiz");

                contas.add(c1);
                contas.add(c2);
                contas.add(c3);

                System.out.println("Total de contas no HashSet: " + contas.size());
            }
        }
4 respostas
solução!

Você só tá adicionando, cadê os métodos pra pegar essas contas?

Simples: Ao gerar o método hashCode(); o eclipse te dá a opção de selecionar os critérios pelos quais ele fará a diferenciação. neste momento, selecione todos os atributos que aparecerem na tela e rode o código novamente.

Ola, José Edson Tavares dos Santos !

Dúvida esclarecida ?

Editei a pergunta do amigo e estou fechando o tópico! obrigado.