这是我创建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_
由ArrayList
HashMap
listChildNew
组成。但它会作为wbsMap
对象存储在HashMap
String
中。因此,我无法对value
key
的{{1}}进行迭代。如何将其转换回HashMap的ArrayList。
以下是列表如何进入日志文件。
NS_CHILD_
答案 0 :(得分:1)
听起来你正在尝试使用散列图制作树形结构。试试这个而不是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
}
答案 1 :(得分:0)
您的HashMap属于Type,因为您将一个键和一个值作为String放入其中。添加对象时,它将自动调用
Object.toString()
您必须序列化您的ArrayList!
这可以用例如GSON,您将ArrayList对象序列化为JSON-String。
现在你可以再次将它反序列化为ArrayList。