gpt4 book ai didi

Java 8 流 - 如何将 map 中的所有对象提取到新 map 中?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:20:39 25 4
gpt4 key购买 nike

我有 map 的 map

siteId -> (AppName -> App) 

我想遍历inner map中的所有Apps,创建一个新的map of

(appId -> App)

我没有流

Map<String, App> result = new HashMap<>();

siteIdToAppNameToAppMap.forEach((siteId, map) ->
map.forEach((appName, app) ->
result.put(app.token, app)
)
);

如何使用流来实现?

最佳答案

像这样的东西怎么样?

siteIdToAppNameToAppMap.values()
.stream()
.flatMap(m -> m.values().stream())
.collect(
Collectors.toMap(App::getToken, Function.identity())
);

我们需要使用 Stream#flatMap提取 App从嵌套 map 。所以stream().values()会给我们Stream<Map<AppName,App>>现在我们需要将其转换为 Stream<App>使用平面 map :

Stream<Map<AppName,App>> -> flatMap ->  Stream<App>

之后我们终于可以收集到一个新的 Map<AppId,App>

关于Java 8 流 - 如何将 map 中的所有对象提取到新 map 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49353493/

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