Java8: List 转 Map<String, List> - 使用流操作

本文将演示如何使用 Java8 的流操作将一个 List<Map<String, String>> 对象转换为 Map<String, List<String>> 对象,其中每个 value 是一个包含所有原始 Map 对象 key 的 List

假设有一个名为 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. flatMap() 方法对每个 Map 对象,将其 key 和 value 转换为一个 Entry 对象,该对象包含两个属性:keyvalue
  3. groupingBy() 方法将 Entry 对象按照 key 进行分组;
  4. mapping() 方法对每个分组,将 Entry 对象的 value 属性转换为一个 List<String> 类型的对象。

通过以上步骤,我们最终得到了一个 Map<String, List<String>> 类型的结果。

Java8: List 转 Map<String, List<String>> - 使用流操作

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

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