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

Duvida sobre o metodo contains

Eu tenho esse código:

public void setPedido(ItemDePedido item) {
        if(this.pedidos.contains(item)){
            for (ItemDePedido itens : pedidos) {
                if(item.equals(itens)){
                    int num = itens.getQtd() + item.getQtd();
                    itens.setQtd(num);
                    break;
                }
            }
        } else{
            this.pedidos.add(item);
        }
    }

Onde pedidos é um Set de ItemDePedido. O problema é que esse método sempre cai no else. Eu já modifiquei o equals de ItemDePedido para:

public boolean equals(Object item) {
        if(this.nome == ((ItemDePedido) item).getNome()){
            return true;
        }
        return false;
    }

E mesmo assim continua caindo no else. Alguma ideia de como resolver? Obg

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
5 respostas
solução!

Olá Bruno, Sobrescreveu o hashcode também?

Não cara. Tenho que sobrescrever esse método em que classe? na ItemDePedido mesmo?

Pedi pra própria IDE gerar os métodos e funcionou! Obrigado pela atenção

Boa Bruno, sempre que sobrescrever o equals vc tem que sobrescrever o hashcode. Como você usou um Set, ele usa uma estrutura de dados baseada em hash. Não sei se nesse ponto do curso (ou nesse curso) foi abordado isso.

Pois é, não foi falado detalhadamente. Quando você falou eu fui pesquisar e tal, ai entendi a relação. Depois disso lembrei que a própria IDE ajudar você a construir o método da melhor forma, ai deu tudo certo. Valeu mesmo pela ajuda!