2012-05-08 2 views
-1

Хотя разбор JSON файл что-то вроде этого:Список_массивов отображается в HashMap

{ 
"heading1" : [ 
    { 
    "heading2" : { 
     "subhead2" : { 
      "value" : "value<heading2>" 
     } 
    }, 
    "heading3" : [ 
     { 
      "heading4" : { 
       "subhead4" : "value<heading4>", 
      }, 
      "heading5" : [ 
       { 
       "subhead51" : { 
        "511" : "value<heading51>", 
       }, 
       "subhead52" : { 
        "522" : "value<heading52>", 
       }, 
       <..similar such heading5 sets> 
       } 
      ], 
      } 
     } 
    } 
], 
} 

У меня есть ArrayList переменной, как показано ниже.

List<Map<String,String>> childMap = new ArrayList<Hashmap<String,String>>(); 

Я получаю значение в этом childMap, как показано ниже:

for(i = 0; i<result.length; i++){ 
    Map<String,String> childSubMap = new HashMap<String,String>(); 
    childsubMap.put(heading51,value<heading51>); 
    childsubMap.put(heading52,value<heading52>); 

    childMap.add(childSubMap); 
    } 

Родителя переменной Карты:

Map<String,String> parentMap = new HashMap<String,String>(); 
    parentMap.put(heading2,value<heading2>); 
    parentMap.put(heading4,value<heading4>); 

Я использую окончательную комбинированную карту для извлечения данных.

Есть ли способ, можно совместить его, как показано ниже:

    Key    |  Value 
    __________________________________________________________ 
    heading2, value<heading2>  | <Set 1> 
    heading4, value<heading4>  | heading51, value<heading51> 
           | heading52, value<heading52> 
           | <Set 2> 
           | heading51, value<heading51> 
           | heading52, value<heading52> 
           | ..<many such Sets> 

Спасибо за помощь заранее!

+3

Ваши требования не ясны. Как именно список должен быть преобразован в карту? Каковы правила? –

+0

Является ли полученная карта только всеми исходными картами из списка, брошенного на одну карту? Если да, что вы хотите делать с дублирующими ключами? –

+0

Что связано с ConcurrentHashMap? Я чувствую, что ты что-то оставляешь. – user12345613

ответ

2

Если все, что вам нужно сделать, это объединить все карты в списке в одну карту, а затем сделать

for (Map<String,String> m : childMap) 
{ 
    parentMap.putAll(childMap); 
} 

Если у вас есть какие-либо дубликаты ключей, последний из которых будет храниться, а остальные отбрасываются.

+0

Спасибо, сэр! Я попытался использовать новую переменную класса, явным образом объявляю свои требуемые типы данных и извлекаю данные из них. Кажется, это работает нормально. Мне все еще любопытно. – curlyreggie

Смежные вопросы