私はあなたのMyClassクラスのequalsメソッドをオーバーライドします。
@Override
public boolean equals(Object obj) {//if you insist in using an Object as argument instead of double[][]
if (!(obj instanceof MyClass)) {
return false;
}
MyClass myObj = (MyClass) obj;
if(_data.length == myObj._data.length){
for(int i=0; i<_data.length; i++){
if(_data[i].length == myObj._data[i].length){
for(int j=0; j<_data[i].length; j++){
if(_data[i][j] != myObj._data[i][j]){
return false;
}
}
}else{
return false;
}
}
}else{
return false;
}
return true;
}
このコードでは、2次元配列はありますが、正方行列は使用できません。 N個の要素...例えば と27個の要素、第三行目と三つの要素、第二列とのすなわち最初の行、テストケース:
double[][] first= new double[5][3];
double[][] second= new double[5][3];
for(int i=0; i<first.length; i++){
for(int j=0; j<first[i].length; j++){
first[i][j] = 5;
}
}
for(int i=0; i<second.length; i++){
for(int j=0; j<second[i].length; j++){
second[i][j] = 5;
}
}
second[4][2] = 2;
MyClass c1 = new MyClass(first);
MyClass c2 = new MyClass(second);
System.out.println("Equals: "+c1.equals(c2));
大きなコードスニペットを貼り付ける必要があります。今は問題の原因を判断することは難しいです。 – soulcheck
['java.util.Arrays.deepEquals()'](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html)を試しましたか? –
デバッグのために、 'MyClass mc1 = new MyClass(); MyClass mc2 = mc1; boolean toCheck = mc1.equals(mc2); ' toCheck == true? –