一开始希望澄清我的疑问是寻求通过Java Streams做的可行性,而不是如何去做 .
我有一个程序,使用for-each循环实现以下 . 想知道它是否可以通过java Streams而不是for-each实现 . 我认为Streams中的分组可能有所帮助但不确定 .
Steps:
-
在每个期间的基础列中找到峰值和最小值列中的最大值(例如:WorkWeek | Month | Quarter)
-
找出每个时期的最大(峰值)和最小值(基数)之间的差异(例如:工作周|月|季)
-
找出不同时期的平均差异 .
MySQL数据:
例如:在显示的数据集中:
-
工作周49 - >(12月3日至12月9日)
-
工作周48 - >(11月26日至12月2日)
Step 1:
WW49: Max value of Peak: 192 || Min value of Basal: 100
WW48: Max value of Peak: 188 || Min value of Basal: 101
Step 2:
WW49: Max Peak - Min Basal = 192 - 100 = 92
WW48: Max Peak - Min Basal = 188 - 101 = 87
Step 3:
平均工作周 Value =(92 87)/ 2 = 89.5
注意:当周期是每天时,我可以使用流来完成上述操作,但不是在工作周明智或月份时使用流
OptionalDouble averageDaily = listData.stream()
.mapToDouble(p -> (Double.parseDouble(p.get(2).toString())- (Double.parseDouble(p.get(3).toString()))))
.average();
希望我的疑问很明确 .
Added: 根据我在下面评论中引用的链接,可以按期间对它们进行分组 .
我提到Link但无法获得分组数据的最大值,最小值,差值和平均值 .