我正在寻找一个合适的基于流的约简操作来找到一个双链表的最大差值。(请不要使用老式嵌套for循环的解决方案...)
假设我的双重列表是
第一个月
则最大差值将导致该值9.1 - 0.3 = 8.8
我使用java流的第一个工作方法是:
List<Double> list = List.of(1.1, 0.3, 7.8, 1.0, 9.1, 2.3);
double maxDiff = list.stream().max(Double::compareTo).get()
- list.stream().min(Double::compareTo).get();
如何为约简操作Stream.reduce()
实现自定义累加器和组合器以实现相同的功能?
2条答案
按热度按时间tyg4sfes1#
通过使用teing收集器,可以避免在列表上进行两次流式传输:
或使用汇总统计
zbq4xfa02#
对于小列表,您可以将列表与其自身进行笛卡尔乘积,并在减少之前计算每个组合的差异: