如何将扁平化的 LinkedHashMap 转换为表示层次结构的 LinkedHashMap
How to transform a flattened LinkedHashMap to one that represents a hierarchy
我是 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 来实现 - 例如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 显示扁平化结果:
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 来实现 - 例如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);
}});
}};