列表<散列映射<字符串,字符串>&GT;替换以前的hashmap值

时间:2018-02-15 23:38:39

标签: java json list hashmap

好的,所以我对此进行了一些研究并且陷入困境。我现在明白了这个列表只是保存了一个指向hashmap的指针,所以最终得到了5个指向同一个值的指针。我不能为我的生活想办法解决这个问题。我如何存储价值并保留它们?我尝试使用String.valueOf(),但显然也是一个指针。

List<HashMap<String,String>> tbcPackages = new ArrayList<HashMap<String,String>>();

JSONObject g = new JSONObject();

for(int i = 0; i <5 ; i++){

    g.clear();

    System.out.println("clear? : " + g);

    g.put("test", i);

    tbcPackages.add(g); 

    System.out.println(tbcPackages);

}

1 个答案:

答案 0 :(得分:2)

发生此问题的原因是您使用相同的对象“JSONObject g”。在循环的每次迭代中,创建一个新对象。修改后的代码如下:

List<HashMap<String,String>> tbcPackages = new 
ArrayList<HashMap<String,String>>();

for(int i = 0; i <5 ; i++){
  JSONObject g = new JSONObject();
  g.clear();

  System.out.println("clear? : " + g);

  g.put("test", i);

  tbcPackages.add(g); 
  System.out.println(tbcPackages);
}