将深度嵌套的map对象转换为扁平化的map对象输出。

import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

/**

* @author 李锋镝

* @date Create at 14:12 2019/7/24

*/

public class MapFlatUtil {

private static final String SEPARATOR = "_";

/**

* 深度嵌套map对象转大map(扁平化)

* @param source 源map

* @param parentNode 父节点扁平化之后的名字

* @return map

*/

public static Map flat(Map source, String parentNode) {

Map flat = new HashMap<>();

Set> set = source.entrySet();

String prefix = StringUtils.isNotBlank(parentNode) ? parentNode + SEPARATOR : "";

set.forEach(entity -> {

Object value = entity.getValue();

String key = entity.getKey();

String newKey = prefix + key;

if (value instanceof Map) {

flat.putAll(flat((Map)value, newKey));

} else {

flat.put(newKey, value);

}

});

return flat;

}

public static void main (String[] args) {

Map map = new HashMap<>();

Map map2 = new HashMap<>();

Map map3 = new HashMap<>();

map.put("root", "root");

map2.put("root", "root");

map2.put("map3", map3);

map3.put("root", "root");

map.put("map2", map2);

System.out.println(flat(map, null));

}

}

输出:

{map2_map3_root=root, map2_root=root, root=root}

Java树形转扁平_多层嵌套map对象转扁平化map相关推荐

  1. 递归实现对多层嵌套的对象数组依照某属性进行排序

    <script>//开发中如果需要对多层嵌套的对象数组依照某个属性进行排序,可以使用递归的方法实现//比如需要对数组里面每一层的importSum属性值进行排序const arr = [{ ...

  2. 实体类多层嵌套 遍历_多层嵌套的json数据

    很多时候我们见到的json数据都是多层嵌套的,就像下面这般: {"name":"桔子桑","sex":"男"," ...

  3. java中的map对象_java中遍历Map对象的四种方式

    import java.util.HashMap; import java.util.Map; /** * 遍历Map对象 * @author xiaosongsong: * @CreateTime ...

  4. js中如何优雅修改一个多层嵌套list对象的值

    如何优雅更改一个N层嵌套对象属性的值 看下边的代码,要加工一个嵌套list的属性值,然后再赋值回去,大概只能这样写: dp.data.treelist = dp.data.treelist.map(. ...

  5. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

  6. java 将Map拷贝到另一个Map对象当中

    java 将Map拷贝到另一个Map对象当中 CreateTime--2018年6月4日09点46分 Author:Marydon 1.需求说明 将一个MapA对象中所有的键值对完全拷贝到另一个Map ...

  7. java 复制Map对象(深拷贝与浅拷贝)

    java 复制Map对象(深拷贝与浅拷贝) CreationTime--2018年6月4日10点00分 Author:Marydon 1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向同一 ...

  8. Java jsonObject 转 map 对象

    1.jsonObject 转 map 相关jar包: import java.util.HashMap; import java.util.Iterator; import java.util.Map ...

  9. map复制 java_java 复制Map对象(深拷贝与浅拷贝)

    1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向同一个对象,在内存中占用同一块内存: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象: 换言之 ...

最新文章

  1. tp剩余未验证内容-8
  2. Spring-Cloud组件:eureka
  3. Sequence 带来的更多乐趣
  4. C语言中二维数组移动一行,二维数组对每一行进行排序。。
  5. python不同数据类型的式子_Python 基础篇:数据类型、数据运算、表达
  6. 15 —— npm —— package.json 与 package-lock.json 的作用
  7. springboot下载TXT文件时会将后台返回的成功信息一并返回
  8. UVA 297 Quadtrees
  9. 根据select的选项不同跳转到不同的页面
  10. CentOS 7 + Win 双系统的安装遇到的重要问题
  11. 有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代
  12. Word表格之VBA知识
  13. 盘点 常见MQ : 消息队列总览
  14. 中华石杉老师课程汇总
  15. python循环中释放内存的方法_我怎样才能在Python中明确释放内存?
  16. linux 中 man 命令的介绍
  17. 孤岛双馈风电机组数学模型matlab,大型变速双馈风电机组动态稳定性仿真分析
  18. 清华大学计算机系2016名单,关于电子系2016 级、2017 级本科生分流至微纳电子系学生名单公示...
  19. 论文写作总结(中外文对比)
  20. 面试平安科技--二面

热门文章

  1. mysql load xml_MySQL的SQL语句 - 数据操作语句(10)- LOAD XML 语句
  2. c++new时赋初值_基于ssm的客户管理系统 - C_you_again
  3. MySQL下载与配置
  4. mysqldump全量恢复_mysql 备份与恢复(全量与增量)
  5. 水域大小 Java_水域大小
  6. 售卖ssr_博人传148集:SSR鸣人卡牌受追捧,“金钱之术”重现,太子被盯上
  7. abs 不会整数 方法 溢出_在 Golang 中针对 int64 类型优化 abs()
  8. 【深度学习】深度学习安防的探索与实践
  9. win10解决Mysql net start mysql启动,提示发生系统错误 5 拒绝访问
  10. 算法训练 素因子去重