gpt4 book ai didi

Java 8 流 - 嵌套映射上的过滤器和重建

转载 作者:行者123 更新时间:2023-12-01 22:40:46 26 4
gpt4 key购买 nike

我的表单中有一个嵌套 map

TreeMap<LocalDate, Map<Long,TreeMap<BigDecimal,String>>>

我必须处理这个 map 并最终得到一个与嵌套 TreeMap 结构相同的 map

TreeMap<BigDecimal, String>>

恰好有两个元素。

我可以通过

找到我想要的元素
values.entrySet().stream().flatMap(date -> date.getValue().entrySet().stream()
.map(type -> type.getValue().entrySet()))
.filter(valueMap -> valueMap.size() == 2 )

但我不知道如何表达 .collect() 来重新组装结构。欢迎任何指点。

最佳答案

调用 flatMapmap 时您会丢失信息。您需要保留 key 以便能够重建您的结构。

稍加改动,您就可以过滤内部映射并使用内部流收集它们,而不会影响外部流的结构:

Map<LocalDate, Map<Long, TreeMap<BigDecimal, String>>> result = values.entrySet().stream()
.collect(
Collectors.toMap(
Entry::getKey,
entry -> entry.getValue()
.entrySet()
.stream()
.filter(subEntry -> subEntry.getValue().size() == 2)
.collect(Collectors.toMap(Entry::getKey,
Entry::getValue)))
);

关于Java 8 流 - 嵌套映射上的过滤器和重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498339/

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