在下面的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);