Java8: List 转 Map<String, List<String>> - 使用流操作
Java8: List 转 Map<String, List> - 使用流操作
本文将演示如何使用 Java8 的流操作将一个 List<Map<String, String>> 对象转换为 Map<String, List<String>> 对象,其中每个 value 是一个包含所有原始 Map 对象 key 的 List。
假设有一个名为 list 的 List 对象,元素为 Map<String, String> 类型,其中每个 Map 对象的 key 和 value 都是字符串类型。现在需要将其转换为一个 Map<String, List<String>> 类型的对象,其中每个 value 是一个 List 对象,包含所有原始 Map 对象的 key。
代码示例:
Map<String, List<String>> result = list.stream()
.flatMap(map -> map.keySet().stream()
.map(key -> new AbstractMap.SimpleEntry<>(key, map.get(key))))
.collect(Collectors.groupingBy(
Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())
));
代码解释:
stream()方法将list对象转换为一个流;flatMap()方法对每个Map对象,将其 key 和 value 转换为一个Entry对象,该对象包含两个属性:key和value;groupingBy()方法将Entry对象按照key进行分组;mapping()方法对每个分组,将Entry对象的value属性转换为一个List<String>类型的对象。
通过以上步骤,我们最终得到了一个 Map<String, List<String>> 类型的结果。
原文地址: https://www.cveoy.top/t/topic/nlLd 著作权归作者所有。请勿转载和采集!