Java8 list对象转MapString ListString其中ListString里边包含key
可以使用Java8的流操作来实现:
假设有一个名为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对象转换为一个流; - 对每个
Map对象,调用flatMap()方法,将其key和value转换为一个Entry对象,这个对象包含两个属性:key和value; - 调用
groupingBy()方法,将Entry对象按照key进行分组; - 对于每个分组,调用
mapping()方法,将Entry对象的value属性转换为一个List<String>类型的对象。
这样就得到了一个Map<String, List<String>>类型的结果。
原文地址: https://www.cveoy.top/t/topic/b02H 著作权归作者所有。请勿转载和采集!