我试图循环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;
}
Run Code Online (Sandbox Code Playgroud)
运行时我收到此错误:
Cannot invoke contains(int) on the array type int[]
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以在不使用嵌套循环的情况下完成(如上所述).我知道我做错了什么,如果有人可以帮忙解决这个问题,那就太好了.另外我不确定要在java doc中查找哪个类int[].
Rei*_*eus 31
您可以检查较大的数组是否outer包含较小的数组中的每个元素,即inner:
public static boolean linearIn(Integer[] outer, Integer[] inner) {
return Arrays.asList(outer).containsAll(Arrays.asList(inner));
}
Run Code Online (Sandbox Code Playgroud)
注意:Integer此方法需要使用类型.如果使用了原语,那么 Arrays.asList将返回List包含单个元素的类型int[].在这种情况下,调用containsAll不会检查数组的实际内容,而是比较基本int数组Object引用.