Método containsKey do Map/HashMap

2 respostas
E

Olá pessoal, tem um atributo em uma classe que está definido como:

Map<Classe1, Classe2> atributo = new HashMap<Classe1, Classe2>();

Na Classe1, que representa a chave dos objetos do Map, sobrescrevi o método equals, para que respeite a regra específica de igualdade da classe.

Quando executo atributo.containsKey(objetoClasse1) ou ainda atributo.keySet().contains(objetoClasse1), o retorno é sempre false, mas quando utilizando um ArrayList para a Classe1 e chamado o método contains() ele retorna verdadeiro.

Meu problema é verificar se um determinado map possui um objeto dentro dele, para eu então obter este objeto e removê-lo ou alterá-lo.

Grato pela ajuda

Everton

2 Respostas

J

O containsKey() verifica se há uma determinada chave no Map, e nesse caso você deve passar um objeto da Classe1.

Se quer verificar é se contem um valor, use containsValue() e passe um objeto da Classe2.

F

Eh que o Map depende tambem do metodo
hashCode

O List nao, ele apenas usa o equals.

Ou seja, tu vai ter que sobreescrever tambem esse metodo.

Se tiver duvidas da uma lida no javadoc do Object.equals

Criado 26 de março de 2007
Ultima resposta 27 de mar. de 2007
Respostas 2
Participantes 3