可以使用Java8的流操作来实现:

假设有一个名为listList对象,元素为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())
    ));

解释一下上述代码的工作原理:

  1. 调用stream()方法将list对象转换为一个流;
  2. 对每个Map对象,调用flatMap()方法,将其key和value转换为一个Entry对象,这个对象包含两个属性:keyvalue
  3. 调用groupingBy()方法,将Entry对象按照key进行分组;
  4. 对于每个分组,调用mapping()方法,将Entry对象的value属性转换为一个List<String>类型的对象。

这样就得到了一个Map<String, List<String>>类型的结果。

Java8 list对象转MapString ListString其中ListString里边包含key

原文地址: https://www.cveoy.top/t/topic/b02H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录