java - 如何将扁平化的 LinkedHashMap 转换为表示层次结构的 LinkedHashMap

标签 java tree linkedhashmap

我是一名 Java 新手,在概念化如何解决尝试创建表示某些分层数据的 LinkedHashMap 的问题时遇到问题。

这是我目前所知的。在此示例中,我有一个 LinkedHashMap,它显示了展平的结果:

public static Map<String, String> myDataSet = new LinkedHashMap() {
{
    put("MY_KEY_1", "My First Label");
    put("MY_KEY_2", "My Second Label");
    put("MY_KEY_3", "My Third Label");
    put("MY_KEY_4", "My Fourth Label");
    put("MY_KEY_5", "My Fifth Label");
}
};

这只是我创建 LinkedHashMap 的方式。此时,我迭代响应的正文并使用键捕获值......但您不需要看到所有那些丑陋的代码。最后我得到了这个响应,其中内容是对象数组:

{
data:{
    content:[
        {
            name: "My First Label",
            value: 500,
        },
        {
            name: "My Second Label",
            value: 1500,
        },
        {
            name: "My Third Label",
            value:2500,
        },
        {
            name: "My Fourth Label",
            value: 3500,
        },
        {
            name: "My Fifth Label",
            value: 4500,
        }
    ]
}

},

这很棒,扁平化的数据集。但我真正想学习的是如何以这样的方式创建 LinkedHashMap,这就是结果:

{
data:{
    content:[
        {
            name: "My First Label",
            props:[
                {
                    name: "Sub label 1",
                    value: 500,
                },
                {
                    name: "Sub label 2",
                    value: 1500,
                },
            ]
        },
        {
            name: "My Second Label",
            props:[
                {
                    name: "Sub label 1",
                    value: 2500,
                },
            ]
        },
        {
            name: "My Fourth Label",
            props: [
                {
                    name: "Sub label 1",
                    value: 500,
                },
            ],
        },
        {
            name: "My Fifth Label",
            props: [
                {
                    name: "Sub label 1"
                    value: 4500
                }
            ],
        }
    ]
}

}

我对如何开始改变这一点有点迷失。任何提示表示赞赏。谢谢。

最佳答案

这可以通过将映射值的类型设置为另一个映射来完成 - 例如Map<String, Map<String, Integer>> .

public static Map<String, Map<String, Integer>> myDataSet =
        new LinkedHashMap<String, Map<String, Integer>>() {{
    this.put("My First Label", new LinkedHashMap<String, Integer>() {{
        this.put("Sub label 1", 500);
        this.put("Sub label 2", 1500);
    }});
    this.put("My Second Label", new LinkedHashMap<String, Integer>() {{
        this.put("Sub label 1", 2500);
    }});
}};

关于java - 如何将扁平化的 LinkedHashMap 转换为表示层次结构的 LinkedHashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57860393/

相关文章:

java - Java 中包可见性的继承

java - 在java中实现一个定时器

java - Equinox 启动器 Main.run() 在每个操作上调用

c++ - 用指针构建树

java - 从数组创建二叉树

java - 使用 Google Guava 过滤和转换集合

algorithm - 位串上 top-k 查询的索引结构

java - 按值对象属性对 LinkedHashMap 键集进行排序

java - Android ListView 与 LinkedHashMap - 滚动时列表乱序

java - 如何搜索存储在 hashmap 中的匹配对?