Java HashMap可以工作,但containsKey不能 [英] Java HashMap get works but containsKey does not
问题描述
我试图在HashMap中找到一个键。我可以使用'get'来打印选定的键,但是当我在if语句中使用'containsKey'时,找不到它。
I am trying to locate a key in a HashMap. I can print the selected key by using 'get' but when I use 'containsKey' in an if statement, it is not found.
我知道键存在于该地图,但它一直返回false。任何想法的人?
I KNOW the key is present in the Map but it keeps returning false. Any ideas people?
我的代码:
My code:
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;
}
以下是Location类的代码:
Here is the code for the Location class:
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;
}
}
推荐答案
您必须确保 Location
类正确地实现了它的 hashCode()
和 equals(Object)
方法(文档)。也就是说,如果两个 Location
对象实际上是相同的,它们应该共享一个共同的哈希码,并且它们的等于
方法应该返回 true
。
You must ensure that the Location
class has properly implemented its hashCode()
and equals(Object)
methods (documentation). That is, if two Location
objects are effectively equal, they should share a common hash code and their equals
method should return true
.
这篇关于Java HashMap可以工作,但containsKey不能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!