java - 使用数组java时的equals方法

标签 java arrays equals

对于检查两个数组是否相等的 equals 方法,第一个方法“equals”实际上是检查两个数组是否相等还是只测试内存地址?还是我应该同时包括两者?

   public boolean equals(Object otherObject)
    {
       if (otherObject == null)
       {
           return false;
       }
       else if (getClass() != otherObject.getClass())
       {
           return false;
       }
       else
       {
          RegressionModel otherRegressionModel = (RegressionModel)otherObject;
          return (xValues == (otherRegressionModel.xValues) && yValues == (otherRegressionModel.yValues));
       }
    }

public static boolean equalArrays(double[] x, double[] y)
{
    if(x.length != y.length)
    {
        return false;
    }
    else
    {
        for(int index = 0; index < x.length; index++)
        {
            if (x[index] != y[index])
            {
                return false;
            }
        }
        return true;             
    }
}

最佳答案

=/!= 运算符根据引用而不是内容比较数组。显然,两个数组可能具有相同的元素,只是它们仍然是在内存中创建的两个不同的对象。数组是两个引用。因此,您的应该应用第二种方法,因为它比较两个数组中的实际元素。此外,您不需要 else 语句。

public static boolean equalArrays(double[] x, double[] y)
{
    if(x.length != y.length)
    {
        return false;
    }
    for (int index = 0; index < x.length; index++)
    {
        if (x[index] != y[index])
        {
            return false;
        }
    }
    return true;             
}

关于java - 使用数组java时的equals方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30179652/

相关文章:

java - 在Java中,相同类型但不同类型参数的空集合总是相等吗?

Java关于equals和compareTo方法的问题

java - 在 AWS 上托管 java 应用程序

java - Eclipse 菜单管理器 : get ImageDescriptor of Image?

java - 关闭StreamSource

java - JMX : rmiPort and registryPort the same?

c++ - C++初始化数组中的特定下标项

javascript - 设置 div 以显示数组

c# - 无法实现数组均值的递归方法

java - 如何为记录设置自定义 equals/hashCode?