李锋镝的博客 - LiFengdi.Com

  • 首页
  • 时间轴
  • 留言
  • 左邻右舍
  • 我的日常
  • 关于我
青衿之志 履践致远
霁月光风 不萦于怀
  1. 首页
  2. 原创
  3. 正文

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

2019年7月25日 12977点热度 0人点赞 0条评论

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

 

除非注明,否则均为李锋镝的博客 - LiFengdi.Com原创文章,转载必须以链接形式标明本文链接
本文链接:https://www.lifengdi.com/archives/article/534
标签: 暂无
最后更新:2019年7月25日

李锋镝

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

打赏 点赞
< 上一篇
下一篇 >
guest
您的姓名(必填)
您的邮箱(必填)
您的站点
guest
您的姓名(必填)
您的邮箱(必填)
您的站点
0 评论
Inline Feedbacks
查看所有评论
网站统计
  • 文章总数:259 篇
  • 评论总数:422 篇
  • 标签数量:218 个
  • 最后更新:2022年5月19日 20:08
  • 建站日期:2016年6月6日
  • 运行天数:2176天

春宵一刻值千金,花有清香月有阴。
歌管楼台声细细,秋千院落夜沉沉。

最新 热点 随机
最新 热点 随机
jsdelivr的CDN加速好像不行了…… 居家办公了~ Python SQL查询使用动态表名 C# 11 的这个新特性,我愿称之最强! iTerm2设置SSH自动连接服务器 一线技术人的成长思考总结
居家办公了~关于8月29号下午博客故障的一些记录办理居住证困难重重啊!WordPress的自动更新好烦啊醒醒~补个税了居住证签注...
微服务的数据库设计 透过现象看本质:Java类动态加载和热替换 ElasticSearch添加mapping MySQL语句执行顺序 一线技术人的成长思考总结 推荐一款比较养眼的Xshell配色方案
标签聚合
日常 SpringBoot JAVA 数据库 MySQL 分布式 架构 ElasticSearch
最近评论
张三 发布于 3 天前(05月20日) 收到,谢谢博主啊
张三 发布于 3 天前(05月20日) 请问是哪些插件啊,我想用一下试试
zenmexiugai 发布于 3 天前(05月20日) 改成一样的还是报错,怎么回事呢
张三 发布于 3 天前(05月19日) 我不会css,作者的前端是怎么写的啊?包括这些评论啊什么的
张三 发布于 3 天前(05月19日) 很棒的博客 作者加油啊
有情链接
  • 志文工作室
  • 临窗旋墨
  • 旧时繁华
  • 城南旧事
  • 强仔博客
  • 林三随笔
  • 徐艺扬的博客
  • 猫鼬的星球计划
  • 云辰博客
  • 韩小韩博客
  • 知向前端
  • 阿誉的博客
  • 林羽凡
  • 情侣头像
  • 哥斯拉
  • Xym's blog

COPYRIGHT © 2022 lifengdi.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备16004681号-2