Java 8 Stream:如何用groupingBy将Map<String,List<Integer>>转为Map<Integer,List<String>>
实现方案
核心代码
import java.util.AbstractMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; // 核心分组逻辑 Map<Integer, List<String>> pincodeToCities = cityMap.entrySet().stream() .flatMap(cityEntry -> cityEntry.getValue().stream() .map(pincode -> new AbstractMap.SimpleEntry<>(pincode, cityEntry.getKey())) ) .collect(Collectors.groupingBy( Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList()) ));
输出验证
上述代码执行后得到的pincodeToCities结构和预期完全一致:
{1=[city1, city2], 2=[city1, city3], 3=[city1, city2, city3], 4=[city2], 5=[city2, city3], 6=[city3], 7=[city3]}
内容的提问来源于stack exchange,提问作者Lalit Singh
相关产品推荐
相关产品推荐

