如何使用.contains方法检查整数值是否在二维数组中?

时间:2015-04-07 10:54:05

标签: java arrays

我知道我可以使用contains()方法,但我无法弄清楚如何将它用于二维数组以及如何返回某些内容。

现在我的代码看起来像这样:

public class Array {

  public static void main(String[] args) {
    int z = 2;
    int[][] data = new int[1][4];
    data[0][0] = 0;
    data[0][1] = 3;
    data[0][2] = 2;
    data[0][3] = 6;

    for (int i = 0; i < data[0].length; i++) {
      if (data[0][i] == z) {
        System.out.println("Array data has z");
      }
    }
  }
}

检查循环是否有效,但我们建议使用contains方法。

但是我怎么能在我的情况下使用contains方法?

1 个答案:

答案 0 :(得分:2)

方法contains()Collections有效,而不是Array

要使用此方法,您需要先将数组转换为集合。由于你有一个二维数组,我建议你遍历它并分析它的每个一维子数组以寻找所需的值。

public boolean containsValue(int[][] data, int z) {
    for (int i = 0; i < data.length; i++) {
        if (Arrays.asList(data[i]).contains(z)) {
            return true;
        }
    }
    return false;
}

另一种方法是使用ArrayUtils.contains()方法,如果您在项目中使用它,如已显示here

最后,您可以执行与两个for块的O(n²)比较,以搜索所需的值,而无需将数组转换为列表的开销,如上所述。但是,我相信上面代码段中显示的方法会更快。