如何比较对象数组中的对象?

时间:2017-10-11 15:42:08

标签: java arrays

我已经从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;
    }

3 个答案:

答案 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 / ... 玩得开心。