如何访问地图内的ArrayList?

时间:2016-01-20 16:59:32

标签: java arrays dictionary arraylist hashmap

所以我有一个数据结构:

Map<String, Map<String, ArrayList<Double>>> dataStructure = new HashMap<String, Map<String, ArrayList<Double>>>();

if(!dataStructure.containsKey(key)) {
                dataStruct2.put(key, new HashMap<String, ArrayList<Double>>());
        }

现在我如何自己访问ArrayList,例如我想在ArrayList中放入一个值。请解释一下你在做什么,我是一个非常棒的人。谢谢,我理解之前已经提出类似的问题,但我不明白解决方案。

感谢您的时间:)

3 个答案:

答案 0 :(得分:1)

要向ArrayList添加值,只需执行以下操作:

try {
    Map m = dataStructure.get("<KEY>");
    for(String key : m.keySet()){
        dataStructure.get("<KEY>").get(key).add(<VALUE>);
    }
} catch (NullPointerException e) {
    System.out.println("null value found!");
}

这行代码获取内部映射,然后获取ArrayList本身,以便您可以编辑它。如果由于某种原因它遇到空值,它将返回异常。

我希望这会对你有所帮助。

答案 1 :(得分:0)

简单地:

if(!dataStructure.containsKey(key)) {
    ArrayList<Double> list = new ArrayList<>();
    list.add(2.0);

    Map<String, ArrayList<Double>> map = new HashMap<String, ArrayList<Double>>();
    map.put(someKey, list);

    dataStruct2.put(someOtherKey, map);
}

答案 2 :(得分:0)

<强>代码:

public void add(Map<String, Map<String, ArrayList<Double>>> data, String key1, String key2, double addOn){
    /*
     * data - original data structure;
     * key1 - entry within primary data structure;
     * key2 - entry within secondary data structure;
     * addOn - value to be added to the list;
     */

    if(data.containsKey(key1) && data.get(key1).containsKey(key2)){
        data.get(key1).get(key2).add(addOn);
    }
    else{
        System.out.println("Error! Key1 || Key2 corrupt!");
    }
}