要将具有类似密钥的 List<Map<String, String>>
转换为 Map<String, List<String>>
,可以使用Java 8的流API来实现这一转换。以下是一个详细的步骤和示例代码:
List<Map<String, String>>
Map<String, List<String>>
以下是一个完整的示例代码,展示了如何进行这种转换:
import java.util.*;
import java.util.stream.Collectors;
public class MapToListConversion {
public static void main(String[] args) {
// 示例输入数据
List<Map<String, String>> listOfMaps = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("key", "A");
map1.put("value", "1");
listOfMaps.add(map1);
Map<String, String> map2 = new HashMap<>();
map2.put("key", "B");
map2.put("value", "2");
listOfMaps.add(map2);
Map<String, String> map3 = new HashMap<>();
map3.put("key", "A");
map3.put("value", "3");
listOfMaps.add(map3);
// 转换为 Map<String, List<String>>
Map<String, List<String>> resultMap = listOfMaps.stream()
.collect(Collectors.groupingBy(
map -> map.get("key"), // 根据 "key" 进行分组
Collectors.mapping(map -> map.get("value"), Collectors.toList()) // 将 "value" 收集到列表中
));
// 输出结果
resultMap.forEach((key, values) -> {
System.out.println("Key: " + key + ", Values: " + values);
});
}
}
listOfMaps
。stream()
方法将列表转换为流。Collectors.groupingBy
方法根据键进行分组。Collectors.mapping
方法将每个映射中的值收集到一个列表中。Optional
类来处理可能的空值。Optional
类来处理可能的空值。通过这种方式,你可以高效地将具有类似密钥的列表映射转换为映射列表,并且可以根据具体需求进行适当的错误处理。
领取专属 10元无门槛券
手把手带您无忧上云