Estoy intentando localizar una clave en un HashMap. Puedo imprimir la clave seleccionada usando 'get', pero cuando uso 'containsKey' en una declaración if, no se encuentra.Java HashMap get funciona pero containsKey no
SÉ que la clave está presente en el Mapa pero sigue volviendo en falso. ¿Alguna gente de ideas?
Mi código:
public static boolean checkLowerStructuralSupport(Location location) {
boolean hasSupport = false;
Location supportingLocation = new Location(location.getX(), location.getY(), location.getZ() - 1);
System.out.println(_levels.get(supportingLocation.getZ()).getLevelSites2().get(supportingLocation)); //works
if (_levels.get(supportingLocation.getZ()).getLevelSites2().containsKey(supportingLocation)) {
hasSupport = true;
} else {
hasSupport = false;
}
return hasSupport;
}
Aquí está el código de la clase Ubicación:
public class Location {
protected int _x;
protected int _y;
protected int _z;
public Location(int xAxis, int yAxis, int zAxis) {
this._x = xAxis;
this._y = yAxis;
this._z = zAxis;
}
public void equals() {
//not implemented yet
}
public void HashCode() {
//not implemented yet
}
public String toString() {
String locationString = Integer.toString(_x) + Integer.toString(_y) + Integer.toString(_z);
return locationString;
}
public void setX(int XAxis) {
this._x = XAxis;
}
public int getX() {
return this._x;
}
public void setY(int YAxis) {
this._y = YAxis;
}
public int getY() {
return this._y;
}
public void setZ(int ZAxis) {
this._z = ZAxis;
}
public int getZ() {
return this._z;
}
}
¿Es este el código exacto que estás ejecutando? De lo contrario, proporcione el código exacto que está usando (solo lo hago porque en otra pregunta, lo que usted proporcionó no era representativo de su problema y causó mucha confusión). –
Además, ¿este comportamiento es consistente? Es decir, get (...) * always * devuelve algo cuando se espera, y containsKey (...) * never * does? –
¿Está desarrollando con un JDK que incluye el código fuente? Si es así, quizás deba intentar depurar el código y entrar en los métodos de HashMap (containsKey y get) para ver si puede encontrar un comportamiento inusual. No te preocupes, estos métodos son terriblemente complejos. –