public class Test01 {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("test","test1");
map.put("test1","test12");
map.put("test2","test13");
Map<String,Object> map1 = new HashMap<>();
map1.put("map",map);
map1.put("test",1);
Map<String, Object> map2 = flattenNestedMap(map1);
System.out.println(map2.toString());
}
// 定义一个方法来展开嵌套的 Map
private static Map<String, Object> flattenNestedMap(Map<String, Object> sourceMap) {
return sourceMap.entrySet().stream()
.flatMap(entry -> flattenNestedMapWithPrefix(entry.getKey(), entry.getValue()).entrySet().stream())
.collect(Collectors.toMap(
Map.Entry::getKey, // 键
Map.Entry::getValue, // 值
(existingValue, newValue) -> newValue // 直接返回新值,覆盖已存在的值
));
}
// 定义一个递归方法来展开带有前缀的嵌套 Map
private static Map<String, Object> flattenNestedMapWithPrefix(String prefix, Object value) {
if (value instanceof Map) {
Map<String, Object> nestedMap = (Map<String, Object>) value;
return nestedMap.entrySet().stream()
.flatMap(entry -> flattenNestedMapWithPrefix(entry.getKey(), entry.getValue()).entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
} else {
Map<String, Object> flattenedMap = new HashMap<>();
flattenedMap.put(prefix, String.valueOf(value));
return flattenedMap;
}
}
}
Map中包含map全部转化为另外一个Map中 Java
最新推荐文章于 2023-11-04 13:36:30 发布