2016-01-20 31 views
-1

所以我有一个数据结构:如何访问地图内的ArrayList?

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中放入一个值。请解释你在做什么,我是一个小菜鸟。谢谢,我了解过类似的问题,但我不明白这些解决方案。

感谢您的时间:)

回答

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); 
} 
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本身,以便您可以编辑它。如果由于某种原因它运行为空值,它将返回一个异常。

我希望这可以帮助你。

+0

工作正常。否则有问题。 – duffymo

+0

问题是我不知道第二个键的值,它基本上是我正在阅读和存储数据的文本文件 – Abdulrehman

+0

我编辑了我的答案。它现在应该工作。 –

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!"); 
    } 
}