Questão

Assuming the hashCode and equals methods are correctly implemented is the following statement true or false?

“If two objects return the same hashCode value they must be equal according to the equals method”

1 True
2 False

true

:roll: pq?

true!!

porque objetos que usando o metodo equals() e retornam true, geral hashcode() iguais!!!
tendeu!!!

:lolgoku: :triunfo: :roto: :arrg: :banana:

True, mas se 2 códigos hashcode for iguais não quer dizer que a verificação de equals retornará true.

Se iguals é igual a true obrigatoriamente os códigos hashcode deve retornar true.

True, mas se 2 códigos hashcode for iguais não quer dizer que a verificação de equals retornará true.

Se iguals é igual a true obrigatoriamente os códigos hashcode deve retornar true.

True, mas se 2 códigos hashcode for iguais não quer dizer que a verificação de equals retornará true.

Se iguals é igual a true obrigatoriamente os códigos hashcode deve retornar true.

opa!

bom, ou eu traduzi errado a afirmação ou o pessoal se contradisse…
pelo que eu traduzi:
Se dois objetos retornam o mesmo valor hashCode eles devem ser iguais de acordo com o método equals.

se for isso mesmo, então a resposta é false. Por que? pelo que eu li:
se o1.equals(o2), então o1.hashCode() deve ser igual o2.hashCode()
se !o1.equals(o2), então o1.hashCode() pode (não obrigatoriamente) ser diferente o2.hashCode()
se o1.hashCode() != o2.hashCode(), então o1.equals(o2) deve retornar false
se o1.hashCode() == o2.hashCode(), então o1.equals(o2) pode (não obrigatoriamente) retornar true

então, de acordo com isso, acredito que a resposta correta é false

valeu,
té+

Tb acho q é false, como ja foi explicado ae, se 2 objetos tem o hashCode igual não obrigatoriamente equals retornara true. Se na pergunta tivesse ‘could’ em vez de ‘must’ ae acho q seria true.
:cool:

CURIOSIDADES:

As 3 leis do hashcode:

  1. Consistente em tempo de execurção, ou seja, em runtime, o hashcode pra um determinado obj num determinado estado deve sempre ser o mesmo;

  2. Para dois objetos iguais, segundo o método equals (AMARRAÇÃO COM O MÉTODO EQUALS), deve-se ter obrigatoriamente um mesmo hashcode;

  3. Dois objetos diferentes não precisam necessariamente terem hashcode diferentes, embora seja altamente recomendável;

As cinco leis do método equals:

  1. Reflexivo - a.equals(a) é sempre true;
  2. Simétrico - se a.equals(b), então b.equals(a);
  3. Transitivo - se x.equals(y) é true e y.equals(z) é true então x.equals(z) é true;
  4. Consistente - a.equals(b) tem q sempre ser o mesmo valor para os mesmos objetos nos mesmo estados;
  5. ComparaçÃo com null é sempre false;[/b]

tb concordo que o ‘must be’ é MUITO FORTE.

resposta: FALSE

Se os métodos hashCode() e equals() fossem herdados de Object, e não implementados na classe, aí sim, a resposta seria true.

É false, tb interpretei mal a pergunta pensei que na pergunta estava dizendo que o hashcode é true e que o equals tb é true.

Sendo assim se o hashcode é true não obrigatoriamente equals vai ser.

Só memorizem que se for equals o código hashcode [b]MUST, MUST[/b] igual.

Hehehe, bons estudos.