假设我有一个带有n个值的数组N.我们还说我有另一个具有n-1值的数组A.我如何检测数组A中不存在哪个值。我的Java代码目前有两个嵌套的for循环
for(int j = 0; j < array.length; j++){
for(int k = j; k < n.length; k++){
这些搜索每个数组中的每个值并进行比较。那么我如何检测阵列A中是否存在数组N中存在的值?
P.S自从我使用Java以来已经有一段时间了,所以如果有更好的方法来搜索两个数组,请告诉我。
答案 0 :(得分:1)
您可以使用List
,
List<Integer> xList = Arrays.asList(new Integer[]{1,2,3,4});
List<Integer> yList = Arrays.asList(new Integer[]{1,2,3});
List<Integer> missingList = new ArrayList<Integer>(xList);
missingList.removeAll(yList);
System.out.println("Elements are in x but not in y are : "+missingList);
<强>输出强>
Elements are in x but not in y are : [4]
答案 1 :(得分:0)
您可以使用像Guava这样的库来获取两组中的difference,然后查看哪些元素仅存在于A中,或哪些元素仅存在于N中。
答案 2 :(得分:0)
只需要检查另一个中存在更大尺寸元素的数组。
int i = 0; // start a global "i" for marking Array N
for(i = 0; i < N.length; i++){
int k = 0; // start a local-global k for marking Array A.
for(k = 0; k < A.length; k++){
if (A[k] == N[i]) {
break;
}
}
// if k reaches to end of the array A then we found the missing num
if (k==A.length) {
break;
}
}
// Still in any case of giving wrong inputs. if i reaches to the end of the Array N then no missing values found.
if (i != N.length)
System.out.println("the number missing is : " + N[i]);
答案 3 :(得分:0)
int[] n = new int[] {1,2,3,4};
int[] a = new int[] {2,3,4};
Set<Integer> aSet = new HashSet<>();
for (int i = 0; i < a.length; i++) {
aSet.add(a[i]);
}
Set<Integer> valuesNotInA = new HashSet<>();
for (int i = 0; i < n.length; i++) {
if (aSet.add(n[i])) {
valuesNotInA.add(n[i]);
}
}