李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 每日心情
  • Now
  • 系列文章
  • 论坛
  • 左邻右舍
    • 左邻右舍
    • 博友圈
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • 网站地图
    • 网站统计
    • 另一个网站
    • 我的导航站
    • 赞助
  • 🚇开往
!Destiny
惟坚韧者始能遂其志
  1. 首页
  2. 原创
  3. 正文

多层嵌套map对象转扁平化map

2019年7月25日 约 204 字1 分钟 211 0 0
本文最后更新于 2019年7月25日,距今已 2612 天,其中的信息可能已经发生变化,请注意甄别。

将深度嵌套的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<String, Object> flat(Map<String, Object> source, String parentNode) {
        Map<String, Object> flat = new HashMap<>();
        Set<Map.Entry<String, Object>> 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<String, Object> map = new HashMap<>();
        Map<String, Object> map2 = new HashMap<>();
        Map<String, Object> 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}

 

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/article/tech/534

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

多层嵌套map对象转扁平化map

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: 暂无
最后更新:2019年7月25日

岁月同一天 9 月 18 日

回望过去的今天,你在写什么

  • 网络
    1 年前 2025年9月18日
    NLB和ALB结合的场景和优缺点

    要理解 NLB(网络层负载均衡,L4)与 ALB(应用层负载均衡,L7)结合 的场景和优缺点,首先需要明确两者的核心定位…

  • 5 年前 2021年9月18日
    1931→2021!

    1931—2021 历史再次刻印下新的时间坐标 90年前那刻骨铭心的屈辱 却一刻也不曾忘、不敢忘、不能忘! 90年前的今…

  • 7 年前 2019年9月18日
    关于Elasticsearch文档的描述以及如何操作文档的详细总结

    文档 什么是文档 在大多数应用中,多数实体或对象可以被序列化为包含键值对的 JSON 对象。 一个 键 可以是一个字段或…

相关文章
  • 从SQL规范性检查、表结构索引检查着手分析如何优化SQL2021年3月3日
  • MySQL主键索引和普通索引的区别2019年12月22日
  • 微服务架构梳理总结(二)2019年6月13日
  • WordPress自定义文章类型支持古腾堡编辑器(Gutenberg)的方法2025年4月3日
  • Linux服务器查看日志命令总结12019年11月4日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

还没有评论,快来抢沙发吧~

... the truly free individual is free only to the extent of his own self-mastery. While those who will not govern themselves are condemned to find masters to govern over them.

听点儿音乐吧 朋友~
文章目录
最新 热点 随机
最新 热点 随机
WordPress下一代默认主题Ipsum预览 C++之父重磅发声:AI编程正在毁掉一代程序员 支撑全网40%网站的WordPress正在重新拥抱PHP生态 Kratos-plus v1.1.24版本更新说明 关于主题加载速度优化的一点儿小演进 市场主流AI编程大模型横向深度分析(2026-09-11)
给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能WordPress缓存插件WP Fastest Cache、WP Rocket 、FlyingPress对比关于使用AI的一些思考关于主题加载速度优化的一点儿小演进Kratos+ v1.1.16版本更新说明AI时代,个人技术博客的出路在哪里?
8条经验轻松上手IDEA插件开发 数据库事务的隔离级别 使用Spring MVC的websocket配置时 Tomcat启动报错 技术人员转团队管理该怎么做 Java之五种遍历Map集合的方式 双 Token 机制
最近评论
blank
李锋镝 发布于 3 小时前(09月18日) 哈哈哈,没事,顺序不影响阅读
blank
李锋镝 发布于 3 小时前(09月18日) 是的,至少降低了编程的门槛
blank
老张博客 发布于 15 小时前(09月17日) AI于我们这样不会编程的人还是得利的!至少可以搞一些小的项目来满足自己的需求!
blank
fairy 发布于 20 小时前(09月17日) 帮助可太大了……甚至已经依赖了。然后我才发现我拼错了nginx……
blank
李锋镝 发布于 1 天前(09月17日) 而且插件多了网站速度还会变慢
标签聚合
IDEA 数据库 SQL 多线程 ElasticSearch MySQL MQ Spring K8s JAVA Claude WordPress 架构 AI JVM Redis 分布式 AI编程 SpringBoot 日常
友情链接
  • 韩情脉脉
  • 瓦匠个人小站
  • 临窗旋墨
  • 林羽凡
  • 蜗牛工作室
  • Honesty
  • 懋和道人
  • 皮皮社
  • 若梦博客
  • 韩小韩博客
  • lijie blog
  • Mr.Sun的博客
  • 哥斯拉
  • 九仞之行
  • sssr7844的博客
  • 彬红茶日记
  • 搬砖日记
  • 老张博客
  • Serendipity
  • 知向前端

COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

lifengdi.com

Domain age badge for lifengdi.com

Theme Kratos-plus By Dylan Li

津ICP备2024022503号-3

京公网安备11011502039375号