【问题标题】:Efficient comparison of 2 double arrays with tolerance - Java2个带公差的双数组的有效比较-Java
【发布时间】:2018-01-18 12:02:53
【问题描述】:

我有一种方法可以检查 2 个 double[] 的相等性以及每个元素之间的容差。我想让这更快,并且想知道是否有一种方法可以在没有 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;
   }

【问题讨论】:

标签: java arrays double


【解决方案1】:

我不明白如何避免迭代所有元素。看看 Arrays.equals(),这正是它在那里完成的方式...... 但是,您还应该检查每个数组的空值,否则您可能会得到 NullPointerException

【讨论】:

  • 我想知道是否有某种方法可以对一个数组从另一个数组中进行元素减法,然后将结果数组中的绝对值相加并将该答案与容差进行比较。
  • 很遗憾,它对您不起作用。您必须做的最小迭代是 O(n)。如果您尝试对值求和并比较结果,您将无法得到任何保证。正如@Lion Chaga 所说,您还必须检查空值。
  • 此外,如果您考虑用流替换 for 循环,请确保您对该主题进行了研究。这只是一个入门链接;)GL! jaxenter.com/…
猜你喜欢
  • 2018-07-17
  • 1970-01-01
  • 2020-02-15
  • 2017-10-07
  • 2023-03-27
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
相关资源
最近更新 更多