Java树形转扁平_多层嵌套map对象转扁平化map
将深度嵌套的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相关推荐
- 递归实现对多层嵌套的对象数组依照某属性进行排序
<script>//开发中如果需要对多层嵌套的对象数组依照某个属性进行排序,可以使用递归的方法实现//比如需要对数组里面每一层的importSum属性值进行排序const arr = [{ ...
- 实体类多层嵌套 遍历_多层嵌套的json数据
很多时候我们见到的json数据都是多层嵌套的,就像下面这般: {"name":"桔子桑","sex":"男"," ...
- java中的map对象_java中遍历Map对象的四种方式
import java.util.HashMap; import java.util.Map; /** * 遍历Map对象 * @author xiaosongsong: * @CreateTime ...
- js中如何优雅修改一个多层嵌套list对象的值
如何优雅更改一个N层嵌套对象属性的值 看下边的代码,要加工一个嵌套list的属性值,然后再赋值回去,大概只能这样写: dp.data.treelist = dp.data.treelist.map(. ...
- java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS
继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...
- java 将Map拷贝到另一个Map对象当中
java 将Map拷贝到另一个Map对象当中 CreateTime--2018年6月4日09点46分 Author:Marydon 1.需求说明 将一个MapA对象中所有的键值对完全拷贝到另一个Map ...
- java 复制Map对象(深拷贝与浅拷贝)
java 复制Map对象(深拷贝与浅拷贝) CreationTime--2018年6月4日10点00分 Author:Marydon 1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向同一 ...
- Java jsonObject 转 map 对象
1.jsonObject 转 map 相关jar包: import java.util.HashMap; import java.util.Iterator; import java.util.Map ...
- map复制 java_java 复制Map对象(深拷贝与浅拷贝)
1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向同一个对象,在内存中占用同一块内存: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象: 换言之 ...
最新文章
- tp剩余未验证内容-8
- Spring-Cloud组件:eureka
- Sequence 带来的更多乐趣
- C语言中二维数组移动一行,二维数组对每一行进行排序。。
- python不同数据类型的式子_Python 基础篇:数据类型、数据运算、表达
- 15 —— npm —— package.json 与 package-lock.json 的作用
- springboot下载TXT文件时会将后台返回的成功信息一并返回
- UVA 297 Quadtrees
- 根据select的选项不同跳转到不同的页面
- CentOS 7 + Win 双系统的安装遇到的重要问题
- 有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代
- Word表格之VBA知识
- 盘点 常见MQ : 消息队列总览
- 中华石杉老师课程汇总
- python循环中释放内存的方法_我怎样才能在Python中明确释放内存?
- linux 中 man 命令的介绍
- 孤岛双馈风电机组数学模型matlab,大型变速双馈风电机组动态稳定性仿真分析
- 清华大学计算机系2016名单,关于电子系2016 级、2017 级本科生分流至微纳电子系学生名单公示...
- 论文写作总结(中外文对比)
- 面试平安科技--二面
热门文章
- mysql load xml_MySQL的SQL语句 - 数据操作语句(10)- LOAD XML 语句
- c++new时赋初值_基于ssm的客户管理系统 - C_you_again
- MySQL下载与配置
- mysqldump全量恢复_mysql 备份与恢复(全量与增量)
- 水域大小 Java_水域大小
- 售卖ssr_博人传148集:SSR鸣人卡牌受追捧,“金钱之术”重现,太子被盯上
- abs 不会整数 方法 溢出_在 Golang 中针对 int64 类型优化 abs()
- 【深度学习】深度学习安防的探索与实践
- win10解决Mysql net start mysql启动,提示发生系统错误 5 拒绝访问
- 算法训练 素因子去重