У меня есть массив объектов PricingSamples:
public class PricingSample {
private Date time;
private Double average;
public PricingSample(Date time, Double average) {
this.time = time;
this.average = average;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public Double getAverage() {
return average;
}
public void setAverage(Double average) {
this.average = average;
}
}
Образцы ежечасно за последний месяц.Я хотел бы рассчитать общее среднее значение для каждого дня.Я могу подсчитать количество вхождений в потоке, а также подсчитать сумму всех средних значений за каждый день, я просто не знаю, как объединить их с вещами в один поток.
Вот что я получил.
Суммирование всех средних значений за каждый день (я группирую по подстроке свойства Date, чтобы оно группировалось по дням, т.е. четверг 26 апреля):
Map<String, Double> counts = Arrays.stream(samples).collect(Collectors.groupingBy((PricingSample e) -> {
return e.getTime().toString().substring(0, 10);
},
Collectors.summingDouble((PricingSample e) -> {
return e.getAverage();
})));
Получение количества образцов за каждый день: Счетчик карт =
Arrays.stream(samples).collect(Collectors.groupingBy((PricingSample e) -> {
return e.getTime().toString().substring(0, 10);
},
Collectors.counting()
));