代码如下:
//生成动态数组,并且转载数据   
ArrayList<HashMap<String, Object>> users = new    ArrayList<HashMap<String, Object>>(); 
HashMap<String, Object> user = new HashMap<String, Object>();
for(int i=0;i<5;i++){        
user.put("Name","Name("+i+")" );  
user.put("Num", i);  
user.put("Price",i);     
users.add(user);
} 小弟的目的是要取出key为Num 和 key为 Price 所对应的值用于计算。请问该如何处理,谢谢!
附录:
代码1:
for(int i=0;i<users.size();i++){
  Map user1 = users.get(i);
  System.out.println("num="+user1.get("Num")+",price="+user1.get("Price"));

如果采用  代码1 的代码打印的结果是  结果1:
num=4,price=4
num=4,price=4
num=4,price=4
num=4,price=4
num=4,price=4
感觉不对。
感觉正确的取值应该如下所示  结果2:
num=0,price=0
num=1,price=1
num=2,price=2
num=3,price=3
num=4,price=4

解决方案 »

  1.   

    HashMap <String, Object> user = null;
    for(int i=0;i <5;i++){   
    user = new HashMap <String, Object>();    
    user.put("Name","Name("+i+")" ); 
    user.put("Num", i); 
    user.put("Price",i);   
    users.add(user);
      

  2.   

    1楼回的正确。因为lz只实例化了一个HashMap,所以添加到ArrayList中的元素都是同一个。
      

  3.   

    ArrayList<HashMap<String, Object>> users = new ArrayList<HashMap<String, Object>>();
    for (int i = 0; i < 5; i++) {
    HashMap<String, Object> user = new HashMap<String, Object>();
    user.put("Name", "Name(" + i + ")");
    user.put("Num", i);
    user.put("Price", i);
    users.add(user);
    }
    for (int i = 0; i < users.size(); i++) {
    Map user1 = users.get(i);
    System.out.println("num=" + user1.get("Num") + ",price="
    + user1.get("Price"));
    }
      

  4.   

    谢谢三位,
    问题所在的确是只实例化了一个HashMap.