2017-10-11 10 views
0

私はキューブ型からオブジェクトを作成しました。オブジェクトの配列からオブジェクトを比較するには?

public Cube (int lengthOfEdge, String color) 
    { 
     this.lengthOfEdge= lengthOfEdge; 
     this.color = color; 
    } 

さらに、私は4つの異なる立方体を作成し、2つの立方体を2つの異なる配列に入れました。 arr1 [1]にあるキューブがarr2 [1]にあるキューブに似ているかどうかを調べるために、配列を比較したいと思います。それ、どうやったら出来るの?

私が作成した比較メソッドを使用しようとしています。

public boolean equals(Cube c) 
    { 
     if(this.getLengthOfEdge()==c.getLengthOfEdge() && this.getColor()==(c.getColor())) 
       return true; 
     return false; 
    } 
+0

同じインスタンスか同じ値かを比較しますか? – LenglBoy

+0

this.getColor()。equals(c.getColor());とにかくあなたのものは等価をオーバーライドする正しい方法ではない、それはオーバーライドされたメソッドではない – Frank

+0

同じ値(同じ色で、長さは同じ) – Eitan

答えて

0

フィールドを比較する必要があります。 object = objectを実行すると、それらの参照が等しいことをチェックしています。

0
boolean isSame = true; 

foreach(int i=0; i<arr1.size(); i++) { 
    if(!arr1[i].equals(arr2.[i])) { 
     isSame = false; 
     break; 
    } 
} 

今、あなたは値/ hasvalues /インスタンス/ memoryadressを比較するためのObjectのデフォルトequals()方法を選択するか、独自でそれを上書きすることができます/ ... は楽しみを持っています。

1

System.Reflectionを使用すると、オブジェクトのプロパティを比較できます。あなたの例では、以下のような関数を作成してオブジェクトを関数に渡すことができます。

 public static bool Compare(Cube f, Cube s) 
     { 
     bool returnVal = true; 
     foreach (var item in f.GetType().GetProperties()) 
     { 
      if(!f.GetType().GetProperty(item.Name).GetValue(f).Equals(s.GetType().GetProperty(item.Name).GetValue(s))) 
      { 
       returnVal = false; 
      } 
     } 
     return returnVal; 
     } 
関連する問題