【问题标题】:Compare 2D Arrays in Java and print differences比较 Java 中的 2D 数组并打印差异
【发布时间】:2016-10-30 17:57:04
【问题描述】:

编辑:关闭,因为下面的代码似乎有效

我目前面临以下问题:
我有两个二维数组,其中第二维的大小始终为 7(因此最大索引为 6)。
现在我需要比较这些数组。
如果在任何索引处添加或删除了一个字段,我想打印出来。

例如:

数组 1:

 0|1|2|3
0 |1|2|5
1 |4|4|6
(...)
6 |6|2|8

数组 2

 0|1|2|3|4
0 |1|1|2|5
1 |4|4|4|6
(...)
6 |6|7|2|8

如您所见,我在第二个数组中添加了一列。
现在我需要打印出此列或将其添加到数组列表中。

删除或更改列时也会发生同样的情况。

我怎样才能做到这一点?

到目前为止我的代码:

static List<String[]> differences;
static List<String[]> checkForDifferences(String[][] tableOld,String[][] tableNew) {
    differences = new ArrayList<String[]>();
    if(!Arrays.deepEquals(tableNew,tableOld)) {
        for(int hour = 0; hour < tableOld.length;hour++) {
            try {
                boolean removed = true;
                for(int hour2 = 0;hour2 < tableNew.length;hour2++)
                    if(Arrays.equals(tableOld[hour],tableNew[hour2]))
                        removed = false;
                    if(removed)
                        differences.add(new String[]{"-",tableOld[hour][0], tableOld[hour][1], tableOld[hour][2], tableOld[hour][3], tableOld[hour][4], tableOld[hour][5], tableOld[hour][6]});
            } catch (ArrayIndexOutOfBoundsException e){
                e.printStackTrace();
                break;
            }
        }
        for (int hour = 0; hour < tableNew.length; hour++) {
            try {
                boolean added = true;
                for (int hour2 = 0; hour2 < tableOld.length; hour2++)
                    if (Arrays.equals(tableNew[hour], tableOld[hour2]))
                        added = false;
                if (added)
                    differences.add(new String[]{"+", tableNew[hour][0], tableNew[hour][1], tableNew[hour][2], tableNew[hour][3], tableNew[hour][4], tableNew[hour][5], tableNew[hour][6]});
            } catch (ArrayIndexOutOfBoundsException e) {
                e.printStackTrace();
                break;
            }
        }

        return differences;
    } else {
        return null;
    }
}

【问题讨论】:

  • 我试图检查子数组 array1[i] 是否存在于 array2 的某个地方,如果没有,它已被删除;如果子数组 array2[i] 不存在于 array1 中,则它已被添加
  • 请编辑您的帖子,并将您的代码添加到其中,以便我们试用/看看出了什么问题。
  • 欢迎来到 Stack Overflow!请查看我们的SO Question Checklist 以帮助您提出一个好问题,从而得到一个好的答案。
  • 请以更易读(更像 Java?)的方式重新格式化您的数组(抱歉,我无法猜测任何内容)。然后添加至少两个示例,说明您期望从某个输入获得什么输出。
  • 到目前为止我已经添加了我的代码

标签: java arrays compare logic


【解决方案1】:

显然,我的代码有效。我只是用错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2019-08-03
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2013-06-17
    相关资源
    最近更新 更多