【发布时间】:2020-10-05 22:36:50
【问题描述】:
有一个对象列表,例如:-
这是我从 List 对象中的查询中获得的三个日期的员工数据。
不是我想要三个日期之间IN_COUNT 和OUT_COUNT 的总数。这可以通过仅对IN_COUNT 进行第一次迭代流并调用sum() 来实现,然后在第二次迭代中,只能对OUT_COUNT 数据求和。但我不想重复列表两次。
这在使用流或任何其他选项的函数式编程中怎么可能实现。
【问题讨论】:
-
"但我不想重复列表两次。"为什么不呢?
-
为什么要使用流或“函数式编程”?这对于循环来说是微不足道的。
-
你能给我们一些代码吗?
-
如果不确切了解您的数据在 java 对象中是如何表示的,那就没什么好说的了。但是,是的,当您执行“纯流式传输”并最终进行汇总/收集时,您需要“每列一个流”。唯一的另一种方法是像使用普通 for 循环一样使用流,在其中处理 IN 和 OUT 的每个元素并总结两个“外部”计数器。
-
您还可以重写查询以直接返回总和 - 除非您需要单独的行数据用于其他用途,否则效率会更高。
标签: java functional-programming java-stream