Java 如何更改HashMap中键的值?

Java 如何更改HashMap中键的值?,java,map,hashmap,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) { //..

大家好,我如何更改
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;
}
private static final Map M=new HashMap();
公共静态DefaultMutableTreeNode executeCommand(int命令,字符串item1,字符串item2){
开关(命令){
//...
case CommandsList.CREATE_子项:
字符串名称=item1;
M.put(名称,新的DefaultMutableTreeNode(名称));
//...
返回M.get(root);
case CommandsList.CHANGE_名称:
字符串newName=item2;
//
//在这里我应该怎么做才能用新名字替换新名字???
//
返回M.get(root);
//...
}
返回null;
}

您不能直接更改键的值,但可以轻松地在新键下重新添加值,如下所示:

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

不能直接更改键的值,但可以轻松地在新键下重新添加值,如下所示:

    map.put(newkey, map.remove(oldkey));
我假设传入方法的“item1”变量是映射的键,即旧名称。现在您希望地图更新为“item2”,这是新名称。如果这是正确的,您可以删除旧名称,然后添加新名称:

map.remove(item1);
map.put(item2, new DefaultMutableTreeNode(item2));
相反,如果您只是想用变量item2中的新名称替换位于item1的映射中的值,那么只需再次输入,新的item2值将覆盖映射中键item1处的值:

map.put(item1, new DefaultMutableTreeNode(item2));
我希望其中一个就是你想要的。请让我们知道哪一个有效,如果有的话,并标记为正确答案,如果是

我假设传入方法的“item1”变量是映射的键,即旧名称。现在您希望地图更新为“item2”,这是新名称。如果这是正确的,您可以删除旧名称,然后添加新名称:

map.remove(item1);
map.put(item2, new DefaultMutableTreeNode(item2));
相反,如果您只是想用变量item2中的新名称替换位于item1的映射中的值,那么只需再次输入,新的item2值将覆盖映射中键item1处的值:

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

我希望其中一个就是你想要的。请让我们知道哪一个有效,如果有的话,并标记为正确答案,如果是

嘿,伙计们,谢谢大家的帮助……问题终于解决了:))


嘿,伙计们,谢谢大家的帮助……问题终于解决了:))


您添加了什么代码,它是如何不起作用的?请更新您的问题。您添加了什么代码以及它是如何不起作用的?请更新你的问题。那我真的不知道你在问什么。这就是azurefrog的答案告诉我们的方法,但你说它不起作用?您是否正在尝试检索在旧密钥处找到的对象,然后使用新密钥将其存储到位,并将旧地图条目与新地图条目一起保留?我真的不知道如何执行此操作…:)你说的“保持原样”到底是什么意思?那么…你想让树节点在地图上出现两次?一次是用旧键,一次是用新键?那么我真的不知道你在问什么。这就是azurefrog的答案说明了该怎么做,但你说它不起作用?你是想检索在旧键上找到的对象,然后用新键将其存储在适当的位置,并保留旧地图吗我真的不知道该怎么做…((你说的“保持它的[sic]位置”到底是什么意思?那么…你想让树节点在地图上出现两次?一次用旧键,一次用新键?