Tôi đang cố tìm một khóa trong HashMap. Tôi có thể in khóa đã chọn bằng cách sử dụng 'get' nhưng khi tôi sử dụng 'containsKey' trong câu lệnh if, nó không được tìm thấy.Java HashMap nhận được công trình nhưng chứaKey không
Tôi BIẾT khóa hiện diện trong Bản đồ nhưng nó vẫn trả về false. Có ý tưởng nào không?
Mã của tôi:
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;
}
Đây là mã cho lớp Location:
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;
}
}
Đây có phải là mã chính xác bạn đang chạy không? Nếu không, vui lòng cung cấp mã chính xác mà bạn đang sử dụng (tôi chỉ hỏi vì trong một câu hỏi khác, những gì bạn cung cấp không phải là đại diện cho vấn đề của bạn và gây ra nhiều nhầm lẫn). –
Ngoài ra, hành vi này có phù hợp không? Tức là, nhận được (...) * luôn luôn * trả về một cái gì đó khi dự kiến, và containsKey (...) * không bao giờ * làm gì? –
Bạn đang phát triển với một JDK bao gồm mã nguồn? Nếu vậy, có lẽ bạn nên thử gỡ lỗi mã và bước vào các phương pháp HashMap (containsKey và nhận được) để xem nếu bạn có thể tìm thấy bất kỳ hành vi bất thường. Đừng lo lắng, những phương pháp này cực kì phức tạp. –