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

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!