如何比较两个地图并将结果引入新地图

问题描述 投票:0回答:1

我有一张地图

Map<Long, List<Set<Long>>> map1; Example: Map<City_Id, List<Set<Subtier_Cities_ids>>> 

还有另一张地图`

Map<Long, Set<Long>> map2; Example: Map<Subtier_Cities_ids,Set<Villages_ids>>`

我想比较map1的值(列表中的第二个值)和map2的键并带来新的map

Map<Long, Set<Long>> map3; Example: Map<City_Id, Set<Villages_ids>>
java collections hashmap iteration value-iteration
1个回答
0
投票

您可以通过迭代map1的条目然后迭代Sets列表来实现这一点。如果我理解正确的话,代码应该是这样的:

Map<Long, List<Set<Long>>> map1 = ...; // Your map1
Map<Long, Set<Long>> map2 = ...; // Your map2
Map<Long, Set<Long>> map3 = new HashMap<>(); // Your map3

for (Map.Entry<Long, List<Set<Long>>> entry : map1.entrySet()) {
    Long cityId = entry.getKey();
    List<Set<Long>> sets = entry.getValue();
    Set<Long> villages = new HashSet<>();

    for (Set<Long> subTierCities : sets) {
        for (Long subTierCity : subTierCities) {
            Set<Long> villageSet = map2.get(subTierCity);
            if (villageSet != null) {
                villages.addAll(villageSet);
            }
        }
    }

    map3.put(cityId, villages);
}
© www.soinside.com 2019 - 2024. All rights reserved.