Ste*_*ier 3 java java-8 java-stream
假设我有简单的POJO餐:
public class Meal
{
LocalDate mealtime;
int calories;
}
Run Code Online (Sandbox Code Playgroud)
然后在List中收集:
List<Meals> meals;
Run Code Online (Sandbox Code Playgroud)
我如何使用流来获得一个总计每月消耗的卡路里的列表.根据单独的月份来制表是非常容易的,但是我想创建一个分散几年的条形图来比较卡路里随时间的消耗,而不仅仅是按月计算.
如何才能做到这一点?我是否必须使用数年和数月的HashMaps创建一些具有数月和数年的Instant对象的复杂结构,还是有更好的方法?
你这样做,TreeMap用于确保结果按年和月排序:
Map<YearMonth, Integer> caloriesByMonth = meals.stream()
.collect(Collectors.groupingBy(m -> YearMonth.from(m.mealtime),
TreeMap::new,
Collectors.summingInt(m -> m.calories)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |