我已经从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 :(得分: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;
}
答案 1 :(得分:0)
您必须比较该字段。如果你做object = object,你正在检查它们的引用是否相等。
答案 2 :(得分:0)
boolean isSame = true;
foreach(int i=0; i<arr1.size(); i++) {
if(!arr1[i].equals(arr2.[i])) {
isSame = false;
break;
}
}
现在,您可以选择equals()
的默认Object
方法,或者使用您自己的方法覆盖它,以便比较值/ hasvalues / instance / memoryadress / ...
玩得开心。