es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo verificar si un hashmap contiene una clave de un tipo de clase personalizado?

Tengo un hashmap cuyas claves son de un tipo de clase personalizado (clase A) y quiero verificar si una subclase B (B extiende A) aparece como clave en el mapa.

IntelliJ no me da ninguna advertencia para el siguiente código, pero no está ingresando a la declaración.
¿Qué podría estar mal?

“`java
HashMap<a, integer=""> map = new HashMap<a, integer="">();
map.put(new B(), 1);

if (map.containsKey(new B())) {
System.out.println("¡Éxito!");
}
“`</a,></a,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema podría ser que los métodos ‘equals’ y ‘hashCode’ no están sobrescritos correctamente en la clase personalizada ‘A’. Cuando una clase hija (en este caso B) hereda de la clase padre (A), la clase hija también debería heredar los métodos ‘equals’ y ‘hashCode’. Si estos métodos no están sobrescritos correctamente en la clase padre, es posible que el HashMap no pueda encontrar la clave incluso si existe en el mapa.

    Para resolver este problema, asegúrese de sobrescribir los métodos ‘equals’ y ‘hashCode’ en la clase A y todas sus clases hijas. El método ‘equals’ debe verificar si el objeto que se está comparando es del mismo tipo y tiene los mismos atributos específicos de la clase. El método ‘hashCode’ debe devolver un entero único para cada objeto basado en sus atributos.

Comments are closed.