在单独的2D阵列中比较两个阵列

时间:2014-10-14 15:21:24

标签: java equals multidimensional-array arrays

我有两个独立的2D数组。每个包含较小的数组,这些数组是int值对。第一个2D数组是输入信息,另一个2D数组包含要匹配或搜索的值。

例如,输入数组是:

{{0, 1}, {0, 2}, {2, 1}, {1, 0}, {0,1}}

第二个参考数组是第一个值的所有可能组合:

{{0, 0}, {0,1}, {0,2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}}

我想获取输入并确定子数组i是否等于任何参考子数组。我希望结果在一维数组中与参考大小相同,并计算在输入数组中找到每个子数组的次数。因此得到的数组应如下所示:

{0, 2, 1, 1, 0, 0, 0, 1, 0}

这是我对代码的尝试:

int[] ResultArray = new int[ReferenceArray.Length];

for (int i = 0; i < ReferenceArray.Length; i++)
{
    for (int j = 0; j < InputArray.length; j++)
    {
        if (InputArray[j] == RefereenceArray[i])
            ResultArray[i]++;
    }
}

出于某种原因,这会编译,但ResultArray根本没有添加任何内容。当我尝试使用

Arrays.equal(InputArray[j], ReferenceArray[i])

相反,我在编译时遇到错误。什么出了什么问题?我有一个类似的代码块,工作正常,无法弄清楚问题在这里。

1 个答案:

答案 0 :(得分:4)

==(在Object类型上)始终测试引用标识。您可以通过更改此

来使用Arrays.deepEquals(Object[], Object[])
if (InputArray[j] == RefereenceArray[i])

类似

if (Arrays.deepEquals(InputArray[j], RefereenceArray[i]))