比较两个整数数组的相似值

时间:2017-11-10 17:09:56

标签: java arrays

我正在尝试编写一种方法来比较&将数组X(方法参数)中的整数(0-9)与Y匹配,如果整数多次出现,则X中的整数只能与Y中的一个整数匹配。例如。 x [3] = 7只能与y [4]或y [5]匹配,但不能同时与两者匹配。应返回总匹配数。

假设两个数组都按降序排序

int[] x = {0,1,4,7,8,9};
int[] y = {1,2,3,5,7,7,8};


x[0] no match i y[i]
x[1] match with y[0]
x[2] no match i y[i]
x[3] match with y[4] only
x[4] match with y[6]
x[5] no match i y[i]

Total number of matches = 3

非常感谢帮助。

到目前为止我所尝试的是以下内容...... 但是它只返回2作为计数。

class Test {

    public static int matchArrays  (int[] x) {
        int[] y = {1,2,3,5,7,7,8};

        int index = 0;
        int count = 0;
        while (index < x.length) {
            for (int i=0; i < x.length; i++) {
                if(x[index]==y[i]) {
                    count++;
                    break;
                }
            }
            index++;
        }
        return count;
    }
    public static void main(String[] args) {
        int[] x = {0,1,4,7,8,9};
        System.out.println(matchArrays(x));
    }
}

1 个答案:

答案 0 :(得分:2)

使用流可以执行以下操作:

import java.util.Arrays;

public class Test {
    public static void main(String[] args){            
        int[] x = {0,1,4,7,8,9};
        System.out.println(matchArrays(x));
    }
    public static int matchArrays  (int[] x) {
        int[] y = {1,2,3,5,7,7,8};
        return (int)Arrays.stream(x).filter(i->Arrays.stream(y).anyMatch(j->j==i)).count();
    }
}