我有一个包含2D int数组的Java类。我想实现hashCode()
方法,以便可以使用它们的属性而不是引用来比较不同的对象。这是我尝试过的:
public int hashCode() {
int hash = 0;
for(int i=0; i<getMatrix().length; i++) {
hash =+ Arrays.hashCode(getMatrix()[i]);
}
return hash;
}
我也尝试使用deepHashCode()
,但是没有用。我的问题是,当使用get()
对象的HashMap
方法时,即使两个对象都具有相同的矩阵,get()
方法也无法正常工作。
编辑:
equals方法的实现
public boolean equals(Object o) {
boolean sameBoard = false;
if(o != null && o instanceof Node) {
Node node = (Node) o;
int[][] board1 = this.getMatrix();
int[][] board2 = node.getMatrix();
return Arrays.deepEquals(board1, board2);
}
return sameBoard;
}