2017-10-11 109 views
0

我從Cube類型創建了一個對象。如何比較對象數組中的對象?

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

此外,我創建了4個不同的立方體,並將兩個立方體放入兩個不同的數組中。我想比較這些數組以查看它們是否完全相同,並且我的意思是如果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());無論如何,你的是不是正確的方式來覆蓋等於,這不是一個overrided方法 – 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; 
    } 
} 

現在你可以選擇的Object默認equals()方法或用自己的覆蓋它比較值/ hasvalues /實例/ memoryadress/... 玩得開心。

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; 
     }