1
resposta

Só precisamos reescrever o método equals()

"Apesar de ser perigoso, se estamos verificando se um elemento pertence a uma implementação de List, só precisamos reescrever o método equals(), já que o método .contains() de List só utiliza o equals para comparação."

A afirmação não está incompleta? sendo necessário, assim como disse o professor, além de reescrever o método equals() também reescrever o método hashcode() ?

1 resposta

Para o método contains() não precisa do método hashCode(), mas ele foi esperto ao dizer: "Apesar de ser perigoso"...

Método contains() não precisa, mas não implementar hashCode() é não aceitar o contrato (sim o contrato de como as coisas devem ser feitas no java), e isso leva a comportamentos bizarros, tipo adicionar em um set, duas classe com id igual (mesmo o id sendo usado no equals()) só porque ele não é usado no hashCode().