我在HashMap中声明了HashMap,但它对所有键都采用了重复的值,这就是为什么我没有得到
当我在循环中声明link时,这个问题就解决了
我的代码...
public static void setM(){
HashMap<String, HashMap<String, String>> response = new HashMap<String, HashMap<String,String>>();
HashMap<String,String> link = new HashMap<String,String>();
for(int i=0;i<6;i++){
link.put("save_pont", "i"+i);
response.put(i+"",link);// error here for putting same value for all key
System.out.println("response -> "+response);
}
}
我得到的输出......
response -> {0={save_pont=i0}}
response -> {1={save_pont=i1}, 0={save_pont=i1}}
response -> {2={save_pont=i2}, 1={save_pont=i2}, 0={save_pont=i2}}
response -> {3={save_pont=i3}, 2={save_pont=i3}, 1={save_pont=i3}, 0={save_pont=i3}}
response -> {3={save_pont=i4}, 2={save_pont=i4}, 1={save_pont=i4}, 0={save_pont=i4}, 4={save_pont=i4}}
response -> {3={save_pont=i5}, 2={save_pont=i5}, 1={save_pont=i5}, 0={save_pont=i5}, 5={save_pont=i5}, 4={save_pont=i5}}
但是我需要像这样的输出。
response -> {0={save_pont=i0}}
response -> {1={save_pont=i1}, 0={save_pont=i0}}
response -> {2={save_pont=i2}, 1={save_pont=i1}, 0={save_pont=i0}}
response -> {3={save_pont=i3}, 2={save_pont=i2}, 1={save_pont=i1}, 0={save_pont=i0}}
response -> {3={save_pont=i3}, 2={save_pont=i2}, 1={save_pont=i1}, 0={save_pont=i0}, 4={save_pont=i4}}
response -> {3={save_pont=i3}, 2={save_pont=i2}, 1={save_pont=i1}, 0={save_pont=i0}, 5={save_pont=i5}, 4={save_pont=i4}}
发布于 2014-04-02 13:06:30
您正在使用键"save_pont“两次:
link.put("save_pont", "i"+i);
从而擦除先前的条目。
发布于 2014-04-02 13:11:16
因为您使用的是相同的hashmap,只是覆盖了这些值。在for循环中声明hashmap,如下所示
public static void setM(){
HashMap<String, HashMap<String, String>> response = new HashMap<String, HashMap<String,String>>();
for(int i=0;i<6;i++){
HashMap<String,String> link = new HashMap<String,String>();
link.put("save_pont", "i"+i);
response.put(i+"",link);
System.out.println("response -> "+response);
}
}
发布于 2014-04-02 13:11:17
link
对象在每次循环迭代时都会发生变化。这可能会对你有所帮助:
public static void setM(){
HashMap<String, HashMap<String, String>> response = new HashMap<String, HashMap<String,String>>();
HashMap<String,String>[] links = new HashMap<String,String>[6];
for(int i=0;i<6;i++){
links[i] = new HashMap<String,String>();
links[i].put("save_pont", "i"+i);
}
for(int i=0;i<6;i++){
HashMap<String,String> link = new HashMap<String,String>();
response.put(i+"",links[i]);
System.out.println("response -> "+response);
}
}
https://stackoverflow.com/questions/22812385
复制相似问题