Rafael_Steil
O seu equals() esta errado. Ao inves de
if( (one instanceof Animal)&&((Animal)one).nome == nome){
Faca
if( (one instanceof Animal)&&((Animal)one).nome.equals(nome)){
Seria interessante tambem verificar se “nome” nao eh null antes de chamar equals.
Rafael
fabioEM
Fiz a tua modificacao mas continua nao encontrando!
fabioEM
Realmente Rafael Steil acho que nao entendi,pois nao deveria dar certo??Uma vez que passa no texte equals e retorna true e mais uma duvida
porque
tambem se fizer
Animal a2=new Animal(“Animal”);
System.out.println(" achei novamente "+mapa.get(a2));//null
//f( (one instanceof Animal)&&((Animal)one).nome.equals(nome)){
//true // aqui tambem é true
public int HashCode(){ //mesmo tamanho para ambos
return nome.length();
}
o correcto nao seria encontrar o valor atraves da mesma chave!?
obrigado pela atencao
fabioEM
[quote=fabioEM]
ok Rafael Steil da certo se fizer assim tava errada a sequencia de parentese!!
if( (one instanceof Animal)&&(((Animal)one).nome == nome)){
}
valeu!!
fabioEM
mas qual a diferenca nao entendi!!
if( (one instanceof Animal)&&(((Animal)one).nome == nome))
e este
if( (one instanceof Animal)&&((Animal)one).nome == nome){
nao é para dar no mesmo?
Rafael_Steil
Releia o meu codigo com mais atencao 
Rafael
Ironlynx
Veja os parênteses na segunda comparação!!!
fabioEM
Veja os parênteses na segunda comparação!!!
mas de ambos os lados retorna true,ou nao?nao consigo perceber aonde a ordem altera o resultado
f( (one instanceof Animal)&&(((Animal)one).nome == nome))//pelo que entendi primeiramente faz aqui a conversao e depois para o istanceof é isso?
e este
if( (one instanceof Animal)&&((Animal)one).nome == nome){
ViniGodoy
Rodei o programa aqui e, após alterar o equals funciona perfeitamente:
-
Na primeira comparação, ele escreve “achei valor”. E é isso que tem que escrever.
-
Na segunda comparação, ele busca o string “Animal”. Esse string não está cadastrado com no seu mapa. A chave do seu mapa é um Animal, não um String.
Uma dica. Seja mais explícito na criação do seu mapa. Se ele mapeia Animal para String, porque não declara-lo assim?
Map<Animal,String>mapa=new HashMap<Animal,String>();