如何在HashMap中更改键的值?

时间:2014-04-04 16:28:50

标签: java map hashmap

你好,我怎么能改变HashMap中的一个键的值?

请看这个:

private static final Map<String, DefaultMutableTreeNode> M = new HashMap<>();

public static DefaultMutableTreeNode executeCommand(int command, String item1, String item2) {
      switch (command) {
        //...
        case CommandsList.CREATE_CHILD:
            String name = item1;
            M.put(name, new DefaultMutableTreeNode(name));
            //...
            return M.get(root);
        case CommandsList.CHANGE_NAME:
            String newName = item2;
            //
            //what should I do here to replace name with newName???
            //
            return M.get(root);
        //...
    }
    return null;
}

3 个答案:

答案 0 :(得分:8)

您无法直接更改密钥的值,但您可以轻松地在新密钥下重新添加值,如下所示:

    map.put(newkey, map.remove(oldkey));

答案 1 :(得分:1)

我假设&#34; item1&#34;传递给方法的变量是地图的关键,即旧名称。现在,您希望使用&#34; item2&#34;更新地图这是新名字。如果这是正确的,您可以删除旧名称,然后添加新名称:

map.remove(item1);
map.put(item2, new DefaultMutableTreeNode(item2));

如果是这种情况,或许是这样,您只想将位于item1的映射中的值替换为变量item2中的新名称,然后再次放置,新的item2值将覆盖什么是在关键项1的地图中:

map.put(item1, new DefaultMutableTreeNode(item2));

我希望其中之一就是你所追求的。如果有的话,请告诉我们哪一个有效,并标记为正确答案!

答案 2 :(得分:0)

嘿伙计们,谢谢大家的帮助......最后问题解决了:))

M.put(item2, M.remove(item1));
M.get(item2).setUserObject(new DefaultMutableTreeNode(item2));