我是一名 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/