这是我创建 HashMap 和 ArrayList 的代码。
HashMap wbsMap = new HashMap();
ArrayList<HashMap<?, String>> list = new ArrayList();
ArrayList<HashMap<?, String>> listChildNew = new ArrayList();
现在我已经存储了与像
这样的键对应的值wbsMap.put("COMPONENT_"+i, bom.getString("COMPONENT"));
wbsMap.put("COMP_QTY_"+i, bom.getString("COMP_QTY").replaceAll("\\s+",""));
wbsMap.put("COMP_UNIT_"+i, bom.getString("COMP_UNIT"));
wbsMap.put("NS_LEFT_"+i,String.valueOf(NS_LEFT));
listChildNew=generateBOMStructureLatest(wbsMap,bom.getString("COMPONENT"),NS_RIGHT,String.valueOf(i));
if(listChildNew.size() >0){
wbsMap.put("NS_CHILD_"+i,listChildNew);
}
wbsMap.put("NS_RIGHT_"+i,String.valueOf(NS_LEFT));
list.add(wbsMap);
现在键 NS_CHILD_
由 HashMap
的 ArrayList
组成,即 listChildNew
。但它作为 String
对象存储在 wbsMap
HashMap
中。因此,我无法迭代 key
NS_CHILD_
的 value
。如何将其转换回HashMap的ArrayList。
以下是列表在日志文件中的显示方式。
[{MATL_DESC_0=Slug for spiral casing, NS_LEFT_0=2, COMP_UNIT_0=PC, NS_RIGHT_0=3, COMP_QTY_0=1, COMPONENT_0=400-110},
{NS_LEFT_1=4, MATL_DESC_1=Flat gasket, COMP_UNIT_1=PC, NS_RIGHT_1=5, COMP_QTY_1=1, COMPONENT_1=400-120},
{MATL_DESC_2=Hexagon head screw M10, COMP_UNIT_2=PC, COMPONENT_2=400-130, NS_LEFT_2=6, NS_RIGHT_2=7, COMP_QTY_2=8},
{COMPONENT_3=400-140, NS_RIGHT_3=15, NS_CHILD_3=[{COMPONENT_3_child=400-141, NS_RIGHT_3_child=10, NS_LEFT_3_child=9, COMP_QTY_3_child=1, MATL_DESC_3_child=Sensor, COMP_UNIT_3_child=PC},
{COMPONENT_3_child=400-142, NS_RIGHT_3_child=12, NS_LEFT_3_child=11, COMP_QTY_3_child=1, MATL_DESC_3_child=Display, COMP_UNIT_3_child=PC},
{COMPONENT_3_child=400-143, NS_RIGHT_3_child=14, NS_LEFT_3_child=13, COMP_QTY_3_child=1, MATL_DESC_3_child=Casing, COMP_UNIT_3_child=PC}], NS_LEFT_3=8, COMP_QTY_3=1, MATL_DESC_3=Revolution counter, COMP_UNIT_3=PC},
{COMPONENT_4=400-150, NS_LEFT_4=16, NS_RIGHT_4=23, NS_CHILD_4=[{NS_LEFT_4_child=17, COMPONENT_4_child=400-151, MATL_DESC_4_child=Temperature sensor, NS_RIGHT_4_child=18, COMP_QTY_4_child=1, COMP_UNIT_4_child=PC},
{NS_LEFT_4_child=19, COMPONENT_4_child=400-152, MATL_DESC_4_child=Display, NS_RIGHT_4_child=20, COMP_QTY_4_child=1, COMP_UNIT_4_child=PC},
{NS_LEFT_4_child=21, COMPONENT_4_child=400-153, MATL_DESC_4_child=Casing, NS_RIGHT_4_child=22, COMP_QTY_4_child=1, COMP_UNIT_4_child=PC}], COMP_QTY_4=1, MATL_DESC_4=Thermostat, COMP_UNIT_4=PC},
]
最佳答案
听起来您正在尝试使用 HashMap 创建树结构。试试这个而不是 HashMap。
class HashTree {
private HashMap<String, HashTree> nodes;
private String value;
public HashTree(String value){
this.value = value;
this.nodes = new HashMap<>();
}
public HashTree(HashMap<String,String> nodes){
this.value = null;
this.nodes = new HashMap<>();
for(Entry<String,String> node : nodes){
this.nodes.put(node.key,node.value);
}
}
public void put(String key, String value){
nodes.put(key, new HashTree(value));
}
public void put(String key, HashMap<String, String> childNodes){
nodes.put(key, new HashTree(childNodes));
}
// Additional getters and setters
}
关于java - 如何将字符串(HashMap的ArrayList)转换为ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188667/