gpt4 book ai didi

java - 函数式编程如何变得更好 (Java 8)

转载 作者:行者123 更新时间:2023-12-02 03:08:46 27 4
gpt4 key购买 nike

public class Main2 {

public static void main(String[] args) {
List<Integer> list = Arrays.asList(2,4,3,-5,-7);

Collections.sort(list);

int i = 0;
int j = list.size()-1;

int min = 1000;

while (true) {
int sum = list.get(i)+list.get(j);

if (mod(sum) < min) {
min = mod(sum);
}
if (sum < 0) {
i++;
}
else if (sum ==0 ) {
i++;
j--;
}
else {
j--;
}

if (j <= i) {
break;
}
}

System.out.println(min);

}
private static int mod(int sum) {
return sum < 0 ? -sum : sum;
}
}

上面的代码是通过添加任意两个元素来找到最接近于零的和。但我无法弄清楚(不使用循环)流如何帮助编写更清晰、可读的代码。我所看到的是,如果在 for 循环内部没有太多逻辑,那么使用流会使代码更干净。

最佳答案

您可以流式传输该列表,并根据再次流式传输的同一列表flatMap它,然后使用该流的min方法。代码肯定会更短,但是否更容易阅读就在于仁者见仁智者见智了:

int min = list.stream()
.flatMapToInt(i -> list.stream()
.filter(j -> !i.equals(j))
.mapToInt(j -> i + j)
)
.map(Math::abs)
.min()
.getAsInt();

关于java - 函数式编程如何变得更好 (Java 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41361033/

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