gpt4 book ai didi

java-8 - java 8流如何找到2个列表元素之间的最小差异

转载 作者:行者123 更新时间:2023-12-04 16:42:10 25 4
gpt4 key购买 nike

我对 Java 8 的 Streams 完全陌生目前正在尝试解决此任务,我有两个列表如下:

List<Integer> list1 = Arrays.asList(5, 11,17,123);
List<Integer> list2 = Arrays.asList(124,14,80);

我想找到这些列表中所有元素之间存在的绝对最小差异。

预期结果: 1(124-123=1)
用 Java 7 实现它不是问题,但是我如何用 Java8 的 Streams 实现它?我如何迭代 forEach元素来自 List1还有 forEach来自 List2并保持最小值?

最佳答案

试试这个

public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(5, 11,17,123);
List<Integer> list2 = Arrays.asList(124,14,80);
OptionalInt min = list1.stream()
.flatMap(n -> list2.stream()
.map(r -> n-r > 0? n-r: r-n))
.mapToInt(t -> t).min();
System.out.println(min.getAsInt());
}

编辑(霍尔格建议)
 OptionalLong min = list1.stream()
.flatMapToLong(n -> list2.stream()
.mapToLong(r -> Math.abs(r-(long)n))).min();

关于java-8 - java 8流如何找到2个列表元素之间的最小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49651567/

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