正确实现矩阵Java的哈希码

时间:2018-11-12 20:45:09

标签: java

我有一个包含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;
    }

0 个答案:

没有答案