如何检测数组中是否存在值

时间:2015-09-28 23:00:30

标签: java arrays detect

假设我有一个带有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以来​​已经有一段时间了,所以如果有更好的方法来搜索两个数组,请告诉我。

4 个答案:

答案 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]);
    }
}