Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个双数组的容错高效比较-Java_Java_Arrays_Double - Fatal编程技术网

两个双数组的容错高效比较-Java

两个双数组的容错高效比较-Java,java,arrays,double,Java,Arrays,Double,我有一个方法来检查两个双[]的相等性,每个元素之间有一个公差。我想让这更快,我想知道是否有一种方法可以做到这一点,没有一个for循环。我一直在搜索,但找不到这样的东西。Arrays.equals()或deepEquals()似乎不接受双重相等的容差。有什么建议吗? 这就是我目前拥有的: private boolean myEquals(double[] array1, double[] array2) { if(array1.length == array2.length)

我有一个方法来检查两个双[]的相等性,每个元素之间有一个公差。我想让这更快,我想知道是否有一种方法可以做到这一点,没有一个for循环。我一直在搜索,但找不到这样的东西。Arrays.equals()或deepEquals()似乎不接受双重相等的容差。有什么建议吗? 这就是我目前拥有的:

private boolean myEquals(double[] array1, double[] array2)
   {
    if(array1.length == array2.length)
    {
       for(int i = 0; i < array1.length; i++)
       {
        if(Math.abs(array1[i] - array2[i]) > 0.01)
        {
           return false;
        }
       }
    }
    else
    {
       return false;
    }
    return true;
   }
private boolean myEquals(双[]数组1,双[]数组2)
{
if(array1.length==array2.length)
{
for(int i=0;i0.01)
{
返回false;
}
}
}
其他的
{
返回false;
}
返回true;
}

我不知道如何避免迭代所有元素。看看Arrays.equals(),这正是它的工作方式。。。
但是,您还应该检查每个数组是否为空,否则您可能会得到NullPointerException

我想知道是否有某种方法可以将一个数组与另一个数组按元素进行相减,然后对结果数组中的绝对值求和,并将结果与容差进行比较。不幸的是,这对您不起作用。您必须执行的最小迭代是O(n)。如果您尝试对值进行任何形式的求和并比较结果,您将无法获得任何保证。正如@ Lang-Chiga说,你也必须检查null值。如果你考虑用流替换for循环,请确保你对这个主题进行研究。这里只是一个起始链接;)德国劳埃德船级社!