list.add資料覆蓋的問題
今天在搞一個小程式的時候,原始碼如下:
int count =obj.getPropertyCount();HashMap<String, String> tempHash = new HashMap<String, String>();
for(int i=0;i<count;i+=3)
{
tempHash.put("EmpNo", obj.getProperty(i).toString());
tempHash.put("EmpName", obj.getProperty(i+1).toString());
tempHash.put("Sex",obj.getProperty(i+2).toString());
list.add(tempHash);
}
這樣會出現第一組資料正常,之後的所有資料全部重複,會出現這種情況的原因是,hashmap構造出來只有一個,再迴圈結構中不斷被引用,list中新增也是新增的引用地址,所以需要保證迴圈體中的每一組hashmap都唯一,也就是說構造需要放到迴圈體中,保證引用地址唯一。程式碼如下
int count =obj.getPropertyCount();
for(int i=0;i<count;i+=3)
{
HashMap<String, String> tempHash = new HashMap<String, String>();
tempHash.put("EmpNo", obj.getProperty(i).toString());
tempHash.put("EmpName", obj.getProperty(i+1).toString());
tempHash.put("Sex",obj.getProperty(i+2).toString());
list.add(tempHash);
}