首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能得到Map<String,Records>,从Map<String,List<Records>>

我怎样才能得到Map<String,Records>,从Map<String,List<Records>>
EN

Stack Overflow用户
提问于 2022-11-02 08:57:51
回答 1查看 56关注 0票数 0

这是我尝试过的代码:

代码语言:javascript
复制
Map<LocalDate, List<Records>> outputs = new HashMap<>();

Map<String, List<Records>> prevDateData = outputs.get(currentDate.minusDays(1))
                                .stream().collect(Collectors.groupingBy(Records::getId));

但我想从输出中实现数据结构:

代码语言:javascript
复制
Map<String, Records> prevDateData

有人能建议我怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-02 09:08:09

您可以保留列表中的所有Records,需要应用一些用于应用映射到相同键的逻辑解析Records的逻辑。例如,保留具有最新时间戳的那个,否则就不可能了。

这就是如何使用三args风格的收集器toMap()来完成的。

代码语言:javascript
复制
Map<String, List<Records>> prevDateData = outputs.get(currentDate.minusDays(1))
    .stream()
    .collect(Collectors.toMap(
        Records::getId,      // keyMapper
        Function.identity(), // valueMapper
        (left, right) -> *your logic for resolving duplicates here* // mergeFunction
    ));

最简单的示例mergeFunction(l, r) -> r,它用一个新的值覆盖以前关联的值。你可能想要更精细的东西。

合并函数的类型为BinaryOperator,基于提供的比较器生成BinaryOperator的静态方法minBy()maxBy()可能有助于实现合并函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74286612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档