1. 程式人生 > >list.add資料覆蓋的問題

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);  
 }