有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在两个数组中查找匹配的数字

嘿,我想写一个方法,比较两个数组,并返回它们共有的值的数量

例如,如果有两个数组:

arr{0,4,2,5} 
arr1{0,7,4,4}

然后该方法将返回2

这就是我目前的情况:

public int numDigitsCorrect(Permutation other) {
    int c=0;
    for(int i=0; i<nums.length; i++) {
        for(int x=0; x<nums.length;x++) {
            if(nums[i]==other.nums[x]) {
                System.out.println(nums[i] + " " + other.nums[x] + " ");               
                c++;
            }
        }
    }
    return c;
}

共 (1) 个答案

  1. # 1 楼答案

    如果你使用Set,它会更加清晰易读。这也将降低代码的复杂性

    比如:

    import java.util.HashSet;
    import java.util.Set;
    
    public class NumberMatch {
    
        public static void main(String[] args) {
            int[] arrOne = { 0, 4, 2, 5 };
            int[] arrTwo = { 0, 7, 4, 4 };
    
            System.out.println(numDigitsCorrect(arrOne, arrTwo));
            System.out.println(numDigitsCorrect(arrTwo, arrOne));
            System.out.println(numDigitsCorrect(arrOne, arrOne));
            System.out.println(numDigitsCorrect(arrTwo, arrTwo));
        }
    
        public static int numDigitsCorrect(int[] arrOne, int[] arrTwo) {
            Set<Integer> setOne = arrayToSet(arrOne);
            Set<Integer> setTwo = arrayToSet(arrTwo);
    
            setOne.retainAll(setTwo);
    
            return setOne.size();
        }
    
        private static Set<Integer> arrayToSet(int[] array) {
            Set<Integer> retSet = new HashSet<Integer>();
    
            for (int i : array) {
                retSet.add(i);
            }
            return retSet;
        }
    }
    

    输出:

    2
    2
    4
    3