作者:Just忽略我_559 | 来源:互联网 | 2023-01-11 08:23
我有一个 List
集合,UserMeal有:
public class UserMeal {
private final LocalDateTime dateTime;
private final int calories;
public UserMeal(LocalDateTime dateTime, int calories) {
this.dateTime = dateTime;
this.calories = calories;
}
public LocalDateTime getDateTime() {
return dateTime;
}
public int getCalories() {
return calories;
}
}
我需要把它转换成 Map
.
映射的键必须是集合中UserMeal项的dateTime
(转换为LocalDate
).
并且地图的价值必须是calories
.
我无法弄清楚如何使用流来做到这一点.就像是:
items.stream().collect(Collectors.toMap(...));
有帮助吗?
这是我当前的代码,显然不起作用.
Map values = mealList.stream()
.collect(Collectors.toMap(m->m.getDateTime().toLocalDate(),
m-> {/* HUH? */}));
Eugene..
5
你需要一个不同的Collector
:
Map values = mealList.stream()
.collect(Collectors.groupingBy(
m -> m.getDateTime().toLocalDate(),
Collectors.summingInt(UserMeal::getCalories)));
或者您可以使用Collectors.toMap
另外一个参数来告诉如何合并条目.
1> Eugene..:
你需要一个不同的Collector
:
Map values = mealList.stream()
.collect(Collectors.groupingBy(
m -> m.getDateTime().toLocalDate(),
Collectors.summingInt(UserMeal::getCalories)));
或者您可以使用Collectors.toMap
另外一个参数来告诉如何合并条目.