java - 嵌套 HashMap 无法正常工作

标签 java collections dictionary hashmap hashtable

我在 HashMap 中声明了 HashMap,但它对所有键都采用重复值,为什么我没有得到

当我在循环内声明链接时,这个问题就解决了
我的代码...

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

最佳答案

您使用了“save_pont”键两次:

link.put("save_pont", "i"+i);

从而删除之前的条目。我认为你想要的是将嵌套的 HashMap 构造放在循环内。

关于java - 嵌套 HashMap 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812385/

相关文章:

java - 继承与列表

arrays - 集合/数组包含方法

sorting - 我们可以使用两个标准来排序吗

python - 字典变量如何存储在内存中?

python - 在mysql表中的不同行中插入字典的值

java - 定时器到0时闪烁

java - D lang 简单基准测试

java - 将附加参数传递给 HTTP @DELETE 方法的正确方法是什么

scala - 创建 Map 为每个 List 元素保留 # of appearance

c# - 需要帮助在 WPF 中反序列化字典 Json