Verificar se valor de um objeto existe no map [RESOLVIDO]
6 respostas
M
macario1983
boa tarde
gostaria de saber o seguinte…
tenho um hashmap<Integer, Telefone> e queria saber se tem alguma forma de usar o metodo containsValue para comparar uma String telefone com o conteudo do objeto telefone usando o metodo referido…
privatebooleantelefoneExiste(Stringtelefone){// Trata antes pra ver se o map não é nuloTelefonet=newTelefone(telefone);// Construtor que recebe o numero de telefone como parametrodao.getTelefones().values().contains(t);}
M
macario1983
bsl.lacerda:
Não dá pra fazer assim?
privatebooleantelefoneExiste(Stringtelefone){// Trata antes pra ver se o map não é nuloTelefonet=newTelefone(telefone);dao.getTelefones().values().contains(t);}
Cara tentei aqui não deu certo, mas acredito que não iria dar…
Pq ele esta comparando na verdade valor da referencia neste caso fraga…
E ai o interior do Objeto…aonde tem o valor desejado a se comparar não ser realmente comparado…
Acho que talvez somente do meu jeito infelizmente…
Mas se alguem achar que estou errado e se tiver mais soluções…
Vlw
bsl.lacerda
Você tem que sobrescrever o método equals da classe Telefone.
O HashMap usa o método hashcode para armazenar os objetos que são inseridos no Map para agilizar a busca.
Todos os elementos que possuem o mesmo hascode são armazenados em um container específico.
Quando ele acessa o container identificado pelo hashcode do objeto, ele usa o método equals para verificar se o elemento é igual ao que você está pesquisando.
Ou seja, se você for usar HashMap é bom implementar o método equals e hashcode.
M
macario1983
bsl.lacerda:
Beleza.
O HashMap usa o método hashcode para armazenar os objetos que são inseridos no Map para agilizar a busca.
Todos os elementos que possuem o mesmo hascode são armazenados em um container específico.
Quando ele acessa o container identificado pelo hashcode do objeto, ele usa o método equals para verificar se o elemento é igual ao que você está pesquisando.
Ou seja, se você for usar HashMap é bom implementar o método equals e hashcode.
Vão ver se eu entendi…
Então quer dizer que é gerado um hashcode para a key e o value?
E por isso que não pra colocar 2 valores iguais de chave no hashmap?
E tipo se eu inserir um valor tipo 100 e depois de novo 100…vao ter o mesmo valor de hashcode?
Pq eu entendi uma vez lembro sobre hashcode é gerado um codigo sobre o que é armazenado…