我正在尝试编写一种方法来比较&将数组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));
}
}
答案 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();
}
}