gpt4 book ai didi

java-8 - 使用 java 8 流 api 进行嵌套查找

转载 作者:行者123 更新时间:2023-12-04 23:13:52 25 4
gpt4 key购买 nike

我们如何在这里使用 java 8 流 api 来获得预期的输出

A1有B1、B2
A2有B1、B2、B3

B1、B2属于C1
B3属于C2

所以,对于 C1,count 应该是 4,因为 B1,B2 出现了 4 次
同样,C2 的计数将为 1,因为 B3 出现 1 次

        List<String> A= new ArrayList<>();
A.add("A1");
A.add("A2");

Map<String, List<String>> AMap = new HashMap<>();
AMap.put("A1", Arrays.asList("B1", "B2"));
AMap.put("A2", Arrays.asList("B1", "B2", "B3"));

Map<String, String> BMap = new HashMap<>();
CMap.put("B1", "C1");
CMap.put("B2", "C1");
CMap.put("B3", "C2");

预期输出
        C1 : 4 , C2 : 1

最佳答案

对于 A 列表中的每个键,我将获取每个 B 键,这些键将从 CMap 中获取每个 C 值。然后平面映射流,按身份分组并计算值。

import static java.util.Collections.emptyList;
import static java.util.function.Function.identity;
import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;

...

Map<String, Long> res = A.stream()
.flatMap(a -> AMap.getOrDefault(a, emptyList()).stream().map(BMap::get))
.collect(groupingBy(identity(), counting()));

关于java-8 - 使用 java 8 流 api 进行嵌套查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48687701/

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