2016-01-20 4 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

Simply:

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

Эта строка кода получает внутренний map, а затем сам ArrayList, чтобы вы могли его редактировать. Если по какой-то причине оно запущено в значение null, оно вернет исключение.

Надеюсь, это вам поможет.

+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!"); 
    } 
} 
Смежные вопросы