gpt4 book ai didi

java - 使用函数从 Java 8 中总和为给定数字的数组中查找一对整数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:39:51 25 4
gpt4 key购买 nike

我正在研究从数组中以不同方式求和为给定数字的两个整数对的问题。我想使用 Java 8 函数。我试过这样的事情:

    for (int i = 0; i < arr.length; i++) {
List<Integer> res = IntStream.of(arr).boxed().filter(x -> x + arr[i] == givenNumber)
.collect(Collectors.toList());
}

但它不会工作(错误)因为“arr[i]”不是最终的并且在我的方法中不能是最终的。可以这样: filter(x -> y -> x + y == givenNumber) 和来自 arr 的 x 和 y 以某种方式工作?

那么这可以在 Java 8 中使用函数式编程来完成吗?如果答案是肯定的,那又如何呢?

最佳答案

可以使它们最终化。如果不出意外,你可以写

for (int i = 0; i < arr.length; i++) {
final int[] arrFinal = arr;
final int iFinal = i;
List<Integer> res = IntStream.of(arr).boxed()
.filter(x -> x + arrFinal[iFinal] == givenNumber)
.collect(Collectors.toList());
}

虽然我会把它写成

for (int i = 0; i < arr.length; i++) {
int target = givenNumber - arr[i];
List<Integer> res = IntStream.of(arr).filter(x -> x == target)
.boxed().collect(Collectors.toList());
}

...这也清楚地表明,就其值(value)而言,您将拥有一个重复多次的单个值列表,这可能首先会 reshape 您的程序。

关于java - 使用函数从 Java 8 中总和为给定数字的数组中查找一对整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811127/

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