如何将String(HashMap的ArrayList)转换为ArrayList

时间:2015-05-12 10:50:34

标签: java arraylist

这是我创建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_

2 个答案:

答案 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。