gpt4 book ai didi

java - 比较 2 个 int 数组是否匹配数字 - java

转载 作者:行者123 更新时间:2023-12-02 08:53:29 25 4
gpt4 key购买 nike

嗨,也许有人建议在 java 中比较 2 个数组的最快方法返回交集数组的字符串如果没有匹配则返回“nil”值

static int [] WinnerNumbers; static int [] ClientNumbers;

执行程序后,我最终得到 2 个填充数组(WinnerNumbers 和 ClientNumbers),我需要对其进行比较并返回匹配项或 null。

我想通过一个函数来做到这一点

public static String WinnerChecker(){

prize = (......)

return prize;
}

最佳答案

我会这样做。如果没有交集,它会返回一个空字符串(这就是我认为 nil 的意思)。

        int[] a = { 1, 2, 4, 3 ,5, 9};
int[] b = { 4, 5, 6, 7, 8, 9, 11, 12, 13 };

String intersection = getIntersection(a, b);
System.out.println(intersection);

public static String getIntersection(int[] a, int[] b) {
return Arrays.stream(a)
.flatMap(i -> Arrays.stream(b).filter(k -> i == k))
.mapToObj(String::valueOf)
.collect(Collectors.joining(""));
}

打印

459

如果任一数组中有重复项,并且输出中不需要它们,则在 mapToObj 进程之前添加方法 .distinct()

如果想将结果作为数组返回,则可以使用以下方法。

    public static int[] getIntersection(int[] a, int[] b) {
return Arrays.stream(a)
.flatMap(i -> Arrays.stream(b).filter(k -> i == k))
.toArray();

}

另一种可能比上述方法更有效的方法是使用集合。

    public static String getIntersection(int[] a, int[] b) {
Set<Integer> seta =
Arrays.stream(a).boxed().collect(Collectors.toSet());
Set<Integer> setb =
Arrays.stream(b).boxed().collect(Collectors.toSet());

seta.retainAll(setb);
return seta.stream().map(String::valueOf)
.collect(Collectors.joining(""));
}

如果需要的话,可以返回实际的集合。

关于java - 比较 2 个 int 数组是否匹配数字 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60628378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com