ArrayList 中的 HashMap 在循环外不存在

HashMap in ArrayList dosent exist outside of loop

我有一个包含 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();
>         }

您将相同的 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);
     }