![](/img/trans.png)
[英]Java Lambda Stream group By and summing integer values/average
[英]Calculate average values with group-by java 8 lambda streaming
我有一個包含 2 個屬性( date and an integer value
)的對象列表。 我正在嘗試編寫一個 java 8 lambda 函數來過濾列表,其中2.00 and 4.00
之間的時間平均值應該單獨計算,而4.01 and 6.00
之間的值分別計算而不管日期
public class Obj{
private Date date;
private int value;
}
示例對象映射如下
[
{
date: '2010-02-01 2.00',
value: 20
},
{
date: '2010-02-01 4.00',
value: 5
},
{
date: '2010-02-02 3.00',
value: 55
},
{
date: '2010-02-02 3.30',
value: 7
},
{
date: '2010-02-03 5.00',
value: 88
},
{
date: '2010-02-03 5.20',
value: 1
}
]
在這里,值20, 5, 55, 7
應該單獨計算,因為當日期值在 2.00 和 4.00 之間時,這些值應該單獨計算88 and 1
應該單獨計算,因為這些值是時間為 4.01 和 6.00 時的位置
任何幫助將非常感激
為了簡化代碼。像這樣更改您的 Obj 類
class Obj {
private String date;
private int value;
}
並且數據只包含小時
分組和歸約代碼如下:
list.stream()
.collect(Collectors.groupingBy(new Function<Obj, Integer>() {
@Override
public Integer apply(Obj o) {
return (int) Float.parseFloat(o.getDate()) / 4;
}
}, Collectors.summarizingInt(new ToIntFunction<Obj>() {
@Override
public int applyAsInt(Obj value) {
return value.getValue();
}
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.