ArrayList中的HashMap存在于循环外部

时间:2015-12-24 08:59:56

标签: java android-studio expandablelistadapter

我有一个包含HashMap的ArrayList。

Example of one of the Arraylist lines:
1 = {HashMap@831906200928}  size = 10  
 0 = {HashMap$HashMapEntry@831906220224} "0" -> "false"  
 1 = {HashMap$HashMapEntry@831906220256} "1" -> "false"    
 2 = {HashMap$HashMapEntry@831906220288} "2" -> "false"   
 3 = {HashMap$HashMapEntry@831906220320} "3" -> "false"  
 4 = {HashMap$HashMapEntry@831906220352} "4" -> "false"  
 5 = {HashMap$HashMapEntry@831906220384} "5" -> "false"  
 6 = {HashMap$HashMapEntry@831906220416} "6" -> "false"  
 7 = {HashMap$HashMapEntry@831906220448} "7" -> "false"  
 8 = {HashMap$HashMapEntry@831906220480} "8" -> "false"  
 9 = {HashMap$HashMapEntry@831906220512} "9" -> "false"

当我退出循环时,所有的HashMap都消失了,而且仍然存在ArrayList大小,但这就是所有列表:

iscompleted = {ArrayList@831906354944}  size = 11
 0 = {HashMap@831906354968}  size = 0  
 1 = {HashMap@831906354968}  size = 0  
 2 = {HashMap@831906354968}  size = 0  
 3 = {HashMap@831906354968}  size = 0  
 4 = {HashMap@831906354968}  size = 0    
 5 = {HashMap@831906354968}  size = 0  
 6 = {HashMap@831906354968}  size = 0  
 7 = {HashMap@831906354968}  size = 0  
 8 = {HashMap@831906354968}  size = 0  
 9 = {HashMap@831906354968}  size = 0  
 10 = {HashMap@831906354968}  size = 0 


>         ArrayList<HashMap<String, Boolean>> iscompleted = new ArrayList<HashMap<String, Boolean>>();
>         HashMap map = new HashMap<String, Object>();
>         for (i=0; i<_listDataHeader.size(); i++) {
>             for (int j=1; j<_listDataChild.size(); j++){
>                 map.put(j-1, tasks.get(x).get("isCompleted"));
>                 x++;
>             }
>             iscompleted.add(map);
>             map.clear();
>         }

1 个答案:

答案 0 :(得分:1)

您将相同的HashMap实例放在列表中,并在每次迭代后清除它。

您应该为要添加到列表的每个元素创建一个新的HashMap

     ArrayList<HashMap<String, Boolean>> iscompleted = new ArrayList<HashMap<String, Boolean>>();
     for (i=0; i<_listDataHeader.size(); i++) {
         HashMap map = new HashMap<String, Object>();
         for (int j=1; j<_listDataChild.size(); j++){
             map.put(j-1, tasks.get(x).get("isCompleted"));
             x++;
         }
         iscompleted.add(map);
     }