gpt4 book ai didi

java - Collectors.toMap() 键映射器

转载 作者:搜寻专家 更新时间:2023-10-31 19:59:54 27 4
gpt4 key购买 nike

我有一个 List<UserMeal>集合,其中 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<LocalDate, Integer> .

map 的键必须是dateTime (转换为 LocalDate )集合中的 UserMeal 项目。

map 的值必须是calories 的总和.

我不知道如何使用流来做到这一点。像这样的东西:

items.stream().collect(Collectors.toMap(...));

有什么帮助吗?

这是我当前的代码,但显然不起作用。

Map<LocalDate, Integer>  values = mealList.stream()
.collect(Collectors.toMap(m->m.getDateTime().toLocalDate(),
m-> {/* HUH? */}));

最佳答案

你需要一个不同的Collector:

Map<LocalDate, Integer>  values = mealList.stream()
.collect(Collectors.groupingBy(
m -> m.getDateTime().toLocalDate(),
Collectors.summingInt(UserMeal::getCalories)));

或者您可以使用 Collectors.toMap,它还有一个参数告诉您如何合并条目。

关于java - Collectors.toMap() 键映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47005219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com