+questão do simulado da kathy  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
cu_ringa
Virtual Machine Man
[Avatar]

Membro desde: 27/08/2003 00:19:11
Mensagens: 602
Localização: Natal-RN
Offline

No simulado tem a seguinte questão q tbm n concordo com a reposta


which of the following will fulfill the equals() and hashCode() contracts for this class? (choose all that apply).

A - return (( SortOf)o).bal == this.bal

B - return (( SortOf)o).code.length() = this.code.length()

C - return (( SortOf)o).code.length() * (( SortOf)o).bal == this.code.length() * this.bal;

D - return (( SortOf)o).code.length() * (( SortOf)o).bal * (( SortOf)o).rate == this.code.length() * this.bal * this.rate;




RESPOSTA: C e D.

mas p mim aresposta é só a C pq se colocar pos seguintes valores quebro o contrato de equals e hashCode, onde se equals == true hashCode tem o mesmo valor.

code.length() bal rate equals hashCode
3 * 3 * 2 = 18 9
2 * 3 * 3 = 18 6

Alguém ai ver outra coisa q n tou conseguindo enxergar, p dar a resposta do simulado ?

"O que levamos desta vida, é a vida que a gente leva".
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

o contrato diz que para a forma eficiente sue hascode deve retornar igual qdo seu equals for igual.. mais se o codigo hashing for diferente nao tem problema qdo seu equals é true.. vc vai senti a dificuldade usar conjuntos.

lembre-se isso nao é regra de equals() true e hashcode ser ==.

é apenas uma sugestão que normalmente todo mundo usa.. pq qdo for usar conjuntos, array vc encontrar o objeto.
Leia novamente com mais carinho essa parte do livro da kathy e observe as entre-linhas

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

LPJava wrote:o contrato diz que para a forma eficiente sue hascode deve retornar igual qdo seu equals for igual.. mais se o codigo hashing for diferente nao tem problema qdo seu equals é true.. vc vai senti a dificuldade usar conjuntos.

lembre-se isso nao é regra de equals() true e hashcode ser ==.



Não é uma regra no sentido que o java não exige isso (apenas algumas partes do java exigem, como Set), mas é uma regra no sentido que a certificação irá testar se vc conhece a regra e sabe aplicar a regra (leia-se implementar equals e hashcode de forma coerente) para aplicar em Set.
Enfim, é uma não-regra que é uma regra de fato.
A duvida do LPJava procede, porque segundo a tal regra hashcode tem que ser igual quando equals é igual. Tal como o LPJava já falou, com aquele código da opção D é possivel ter hash diferente quando equals é igual. Se a pergunta não estivesse sendo feita no contexto da regra do hashcode-equals então A e B tb estariam certas, já que se não ha nenhuma relação, qualquer coisa é aceitável.

Poderiamos pensar que existe algum erro de tipografia e que * é na realidade outro operador, mas não consigo encontrar nenhum operador em que a opção D seja coerente com a regra.

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

assim falei.. para ele nao ver como regra.. mais no exame ele pode avaliar das duas formas.. principalmente qdo envolver conjuntos.. mais a essencia é o q vc falou equal true, hashcode true tb.... no meu exame eu fui avaliado de das duas formas.. eficiente e menos eficiente :d


Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

LPJava wrote:assim falei.. para ele nao ver como regra.. mais no exame ele pode avaliar das duas formas.. principalmente qdo envolver conjuntos.. mais a essencia é o q vc falou equal true, hashcode true tb....



Eficiência é outro ponto que não têm diretamente a ver. O hashcode pode seguir a regra e não ser eficiente. Por exemplo



É extremamente rápido, é coerente com a regra , mas não é eficiente.


no meu exame eu fui avaliado de das duas formas.. eficiente e menos eficiente :d


Não será que foi avaliado pela mesma coisa ? Se vc sabe quando se aplica e sabe quando não se aplica, então vc sabe o que é...

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

sergio e vc entendeu que eu disse o q? pq eu falei voltado para o exame... o q ele pode ser avaliado.. na hora e nao acha que um codigo ineficiente está errado..

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team