在下面的for循环中:

for(int i = 0; i < initialSplit.length; i++){ //initialSplit - contains one DB record (row)
    String [] cellVal = (initialSplit[i]).split("~");
    System.out.println(cellVal[0]);
    for(int j = 0; j < cellVal.length; j++){ //cellVal - contains value of each cell in a record
        map.put(dataIndexString[j], cellVal[j]);
        System.out.println(j+"--"+dataIndexString[j] + " -- key : value -- "+cellVal[j]);
    }
    items.add(map);//The last record alone adds into the ArrayList 'items'
}


initialSplit的长度为10(10个记录),cellVal.length的长度为21。

HashMap添加到ArrayList时,最后一个映射将添加10次,而不是10个映射,每个映射都添加一次。我也尝试过map.clear(),但是可能在错误的位置。
我无法发现错误。谁能帮帮我吗?

最佳答案

这是您多次添加到列表的地图实例。

为了将差异映射添加到列表中,您必须创建多个实例:

    map = new HashMap<...>();
    for(int j = 0; j < cellVal.length; j++){ //cellVal - contains value of each cell in a record
        map.put(dataIndexString[j], cellVal[j]);
        System.out.println(j+"--"+dataIndexString[j] + " -- key : value -- "+cellVal[j]);
    }
    items.add(map);

10-07 23:23