判断一个数组是否包含另一个数组中的所有元素

新手上路,请多包涵

我试图遍历 2 个数组,外部数组比另一个长。它将循环遍历第一个,如果第二个数组不包含该 int,它将返回 false。但我不知道该怎么做。这是我到目前为止所拥有的:

 public boolean linearIn(int[] outer, int[] inner) {
  for (int i = 0; i < outer.length; i++) {
    if (!inner.contains(outer[i])) {
      return false;
    }
  }

  return true;
}

运行时出现此错误:

 Cannot invoke contains(int) on the array type int[]

我想知道是否可以在不使用嵌套循环(如上)的情况下完成。我知道我做错了什么,如果有人能在这件事上提供帮助,那就太好了。此外,我不确定在 int[] 的 java 文档中寻找什么类。

原文由 Caveman42 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

您可以检查较大的数组 outer 包含较小数组中的每个元素,即 inner

 public static boolean linearIn(Integer[] outer, Integer[] inner) {

   return Arrays.asList(outer).containsAll(Arrays.asList(inner));
}

注意: Integer 此方法需要类型才能工作。如果使用基元,则 Arrays.asList 将返回 List 包含类型为 int[] 的单个元素。在这种情况下,调用 containsAll 将不会检查数组的实际内容,而是比较原语 int 数组 Object references945。

原文由 Reimeus 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你不想自己实现它,你有两个选择使用 java.util.Arrays

原文由 Stephane Godbillon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题