一开始希望澄清我的疑问是寻求通过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: 根据我在下面评论中引用的链接,可以按期间对它们进行分组 .

Refer Code : [Code] 2

我提到Link但无法获得分组数据的最大值,最小值,差值和平均值 .