【问题标题】:How can I use .contains method to check if integer value is in an two dimensional array?如何使用 .contains 方法检查整数值是否在二维数组中?
【发布时间】:2015-04-07 10:54:04
【问题描述】:

我知道我可以使用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 方法?

【问题讨论】:

  • @Mena:我认为这里没有递归调用。
  • 您被要求使用哪个包含方法,究竟是什么?
  • .contains 方法适用于字符串,而不适用于整数数组。在这里,您已经比较了数组的每个值!
  • 数组没有包含方法。您的任务是创建一个名为 contains() 的方法,或者建议您使用具有 contains()List(如 ArrayList
  • 一个(可能很重要)注意:数组没有contains 方法。 (不过,ArrayList 有。)

标签: java arrays


【解决方案1】:

方法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²) 比较来搜索所需的值,而无需将数组转换为列表的开销,如上所述。不过,我相信上面代码sn-p所示的方法会更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多