Finding if an array contains all elements in another array

后端 未结 5 1164
旧时难觅i
旧时难觅i 2020-11-29 10:53

I am trying to loop through 2 arrays, the outer array is longer then the other. It will loop through the first and if the 2nd array does not contain that int it will return

5条回答
  •  無奈伤痛
    2020-11-29 11:03

    If you would like to use contains then you need an ArrayList. See: http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.Object)

    Otherwise, you need two loops.

    There is a workaround like this:

    public boolean linearIn(int[] outer, int[] inner) {
        List innerAsList = arrayToList(inner);
        for (int i = 0; i < outer.length; i++) {
          if (!innerAsList.contains(outer[i])) {
             return false;
          }
       }
       return true;
    }  
    
    private List arrayToList(int[] arr) {
        List result= new ArrayList(arr.length);
        for (int i : arr) {
            result.add(i);
        }
        return result;
    }
    

    But don't think that looping is not happening, just because you don't see it. If you check the implementation of the ArrayList you would see that there is a for loop: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.indexOf(java.lang.Object) So you are not gaining any performance. You know your model best, and you might be able to write more optimized code.

提交回复
热议问题