李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 读书观影
  • 系列
  • AI工具集
  • 论坛
  • 友圈
    • 友链
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
静亦定 动亦定
惟坚韧者始能遂其志
  1. 首页
  2. 原创
  3. 正文

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

2019年7月25日 400 0 0
本文最后更新于 2019年7月25日,距今已 2657 天,其中的信息可能已经发生变化,请注意甄别。

将深度嵌套的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}

 

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

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

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

微信扫一扫分享

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

岁月同一天 11 月 3 日

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

  • 其他
    1 年前 2025年11月3日
    免费开源的在线手绘风格白板工具——Excalidraw

    在数字化办公与远程协作日益普及的今天,我们对“快速可视化表达”的需求越来越强烈——无论是产品经理梳理用户流程、开发者绘制…

  • 后端
    1 年前 2025年11月3日
    Spring事件驱动深度指南:从单机异步到亿级流量,比MQ更轻的架构神器

    在高并发系统设计中,“解耦”与“高效”是永恒的追求。我们常常依赖MQ(如RocketMQ、Kafka)实现异步通信,但对…

  • 中间件
    1 年前 2025年11月3日
    分库分表正在被淘汰?NewSQL与分库分表的深度博弈与选型指南

    在分布式架构演进中,“如何应对海量数据存储与高并发访问”始终是核心难题。早年间,分库分表(Sharding)凭借“拆分数…

相关文章
  • mybatis-plus-join-boot-starter介绍及用法2025年4月24日
  • 查看占用 CPU 最高的线程(Java)2021年5月27日
  • 从零搭建Spring Cloud Gateway网关(一)2020年3月18日
  • 动态线程池框架DynamicTp使用以及架构设计2025年4月29日
  • jmap命令(jdk1.8)2020年9月27日

李锋镝

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

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

文章评论

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

Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma -- which is living with the results of other people's thinking. Don't let the noise of other's opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

听点儿音乐吧 朋友~
文章目录
最新 热点 随机
最新 热点 随机
又一个逆天改命的人:小小徐 AI的生成能力等于生产力吗? NGINX严重漏洞(CVE-2026-15176、CVE-2026-93479、CVE-2026-97205) Kratos-plus v1.1.27更新说明 php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619) 聊一聊DeepSeek开放自研搜索API这事
给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了游本昌去世关于主题加载速度优化的一点儿小演进给主题增加了Now、每日心情、年度回顾、岁月同一天、随机漫步等功能
Gemini 3 前端开发革命:从原型到 3D 应用,一句话搞定全栈开发(2025 实测) 内存屏障浅析 Java设计支持千万级别的短链 redis异常记录 Chrome 浏览器漏洞 睡觉睡不踏实
最近评论
李锋镝 发布于 20 小时前(11月02日) 良田是啥?
李锋镝 发布于 20 小时前(11月02日) 哈哈哈,我也希望
李锋镝 发布于 20 小时前(11月02日) 看最新的说是骗流量的,哎
女装品牌前十名 发布于 1 天前(11月01日) 文章不错非常喜欢,支持一下
彬红茶 发布于 2 天前(11月01日) 我也刷到这个了,不知道你有没有刷过良田
标签聚合
分布式 多线程 JVM Claude K8s JAVA ElasticSearch Redis Theme WordPress SpringBoot 日常 AI编程 AI 数据库 架构 IDEA MySQL Spring SQL
友情链接
  • 哥斯拉
  • 林羽凡
  • 皮皮社
  • 搬砖日记
  • 老张博客
  • Mr.Sun的博客
  • 瓦匠个人小站
  • 志文工作室
  • lijie blog
  • 知向前端
  • 韩情脉脉
  • Serendipity
  • 彬红茶日记
  • sssr7844的博客
  • 韩小韩博客
  • 懋和道人
  • 九仞之行
  • Honesty
  • 刘永博客

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号