Por gentileza alguem poderia me explicar em que situacao um hascode sobrescrito nao é eficiente ou ate inapropriado estou estudando pelo livro sierra mas nao encontrei exemplos didaticos.Alem do mais se alguem sabe indicar alguma boa referencia para a parte de collection que tambem estou em alto mar
agradeço desde ja!!
Ineficiente:
Quando um hashcode acaba sendo repetido para vários objetos iguais. Exemplo:
public int hashCode() {
return 1;
}
Esse hashcode é valido. Dois objetos iguais sempre retornam o mesmo hash. Porém, não é muito eficiente. Dois objetos diferentes também tem altíssimas chances (nesse caso 100%) de retornar o mesmo valor.
Inapropriado:
Quando o hash retorna valores diferentes para objetos iguais. Isso é uma violação da interface do hashCode e equals. Exemplo:
[code]public void equals(Object other) {
if (other == null) return false;
if (other.getClass() != getClass()) return false;
return ((MyClass)other).phoneNumber == phoneNumber;
}
public int hashCode() {
return id;
}[/code]
Nesse caso, haveria problemas sérios se dois objetos com ids diferentes tivesse associados ao mesmo phoneNumber. O hashcode seria diferente, mas os objetos retornariam true no equals.
Um ótimo material sobre hash code e equals está no livro effective java. Não deixe de ler, o capítulo está disponível online no site do autor:
http://java.sun.com/docs/books/effective/chapters.html
Algumas boas referências sobre collections:
http://java.sun.com/developer/Books/javaprogramming/corejava/
http://java.sun.com/docs/books/tutorial/collections/index.html
[quote=ViniGodoy]Algumas boas referências sobre collections:
http://java.sun.com/developer/Books/javaprogramming/corejava/
http://java.sun.com/docs/books/tutorial/collections/index.html[/quote]
Obrigado ViniGodoy!
Ola ViniGodoy queria te parabenizar pelo site muito bom ,era um tempo que estavo procurando algo para jogos e finalmente encontrei. Tenho uma base em c mas agora estou estudando para scjp java ,mas qd acabar os estudos vou entrar na area de jogos com tudo pois tenho bastante interesse. Como exercicios implementei alguns quebra cabeça do tipo 8 rainhas o passeio do cavalo em c sem interface grafica ,só como base e se vc tivar algumas sujestoes
serao muito bem aceitas!!
valeu!!