java:将2D数组的值与同一列的arraylist值进行比较

时间:2016-08-31 10:41:51

标签: java arrays arraylist multidimensional-array

我有一个带有大量零和其他值的2D数组。在第一步中,我将一列中的所有行相加,以找出每列的总和。总和的结果保存在arraylist中。 现在我需要比较2D-Array中的每个值,如果它等于arraylist中其列的总和。如果它相等,则该行的第一个值将保存在单独的arraylist中。

举个例子:

          {A, 0, 0, 6, 0}
          {B, 0, 2, 0, 2}
          {C, 0, 1, 0, 0}
          {D, 3, 0, 0, 2}

Arraylist    {3, 3, 6, 4}

我想将每个值与同一位置的arraylist中的值进行比较。

到目前为止我的代码:

List sumList = new ArrayList();
for(int c = 1; c < excelMatrix.length; c++){
    int sum = 0;
    for(int r = 0; r < excelMatrix.length-1; r++){
        sum = excelMatrix[r][c] + sum;
        sumList.add(sum);
    }
}

List checkList = new ArrayList();
for(int c = 1; c < excelMatrix.length; c++){
    for(int r = 0; r < excelMatrix.length-1; r++){
        if(excelMatrix[r][c].equals(sumList)){
            checkList.add(excelMatrix[r][0]);
        }
    }
}

在将数组值与arraylist的值进行比较之前,一切正常。

3 个答案:

答案 0 :(得分:0)

您正在将整数与列表进行比较,而不是列表中列值的对应总和。

如果excelMatrixInteger数组,请执行以下操作:

if(excelMatrix[r][c].equals(sumList.get(c-1)))

否则,

if(excelMatrix[r][c] == sumList.get(c-1))

答案 1 :(得分:0)

您没有在示例代码中指定类型,因此我认为它类似于:

    String[][] excelMatrix = {{"A", "0", "0", "6", "0"},
                              {"B", "0", "2", "0", "2"},
                              {"C", "0", "1", "0", "0"},
                              {"D", "3", "0", "0", "2"}};

    List<String> sumList = new ArrayList<>();
    sumList.add("3");
    sumList.add("3");
    sumList.add("6");
    sumList.add("4");

并像这样修改了for循环:

    List<String> checkList = new ArrayList<>();

    for(int c = 0; c < excelMatrix.length; c++){
        for(int r = 1; r < excelMatrix[0].length; r++){
            if(excelMatrix[c][r].equals(sumList.get(r-1))){
                 checkList.add(excelMatrix[c][0]);
            }
        }
    }

最后

    for(int i = 0; i<checkList.size(); i++){
        System.out.print(checkList.get(i));
    }

给出

  

AD

答案 2 :(得分:0)

This is completely unrelated to the answer you are looking for. The code you are using to calculate the sum of the column elements is wrong. Use the below code to get the proper list of sums.

   List sumList = new ArrayList();
        for(int c = 0; c < excelMatrix.length; c++){
            int sum = 0;
            for(int r = 0; r < excelMatrix.length; r++){
                sum = excelMatrix[r][c] + sum;
                System.out.println(sum);

            }
            sumList.add(sum);
        }