Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以将HashMap键和值交换到其他值吗?_Java_Hashmap - Fatal编程技术网

Java 我可以将HashMap键和值交换到其他值吗?

Java 我可以将HashMap键和值交换到其他值吗?,java,hashmap,Java,Hashmap,我是Java新手,我想做的是将HashMap(hm)的所有键和值交换到HashMap(hm2),反之亦然。我没有找到任何解决办法。可能吗 import java.util.*; class HashMapSwap{ public static void main(String args[]){ HashMap<Integer, String> hm = new HashMap<Integer, String>(); HashMap<Integer,

我是Java新手,我想做的是将
HashMap
hm)的所有键和值交换到
HashMap
hm2),反之亦然。我没有找到任何解决办法。可能吗

import java.util.*;

class HashMapSwap{
public static void main(String args[]){
    HashMap<Integer, String> hm = new HashMap<Integer, String>();
    HashMap<Integer, String> hm2 = new HashMap<Integer, String>();
    
    hm.put(3, "Mobile");
    hm.put(11, "Tab");
    
    hm2.put(4, "PC");
    hm2.put(1, "Laptop");
    
    Map tmp = new HashMap(hm);
    tmp.keySet().removeAll(hm2.keySet());
    hm2.putAll(tmp);

    for(Map.Entry en:hm2.entrySet()){
        System.out.println(en.getKey() + " " + en.getValue());
    }
}
}
import java.util.*;
类HashMapSwap{
公共静态void main(字符串参数[]){
HashMap hm=新的HashMap();
HashMap hm2=新的HashMap();
hm.put(3,“移动”);
hm.put(11,“标签”);
hm2.put(4,“PC”);
hm2.put(1,“笔记本电脑”);
Map tmp=新HashMap(hm);
tmp.keySet().removeAll(hm2.keySet());
hm2.putAll(tmp);
对于(Map.Entry en:hm2.entrySet()){
System.out.println(en.getKey()+“”+en.getValue());
}
}
}
O/p:

1台笔记本电脑

3移动电话

4件

11选项卡

//在(新)临时映射中存储第一个映射
HashMap tempMap=新HashMap(hm);
//清除第一个映射并存储hm2对
hm.clear();
hm.putAll(hm2);
//清除第二个映射并存储tempMap对
hm2.clear();
hm2.putAll(tempMap);
//编辑(来自Palcente的提示)
//可选:之后将tempMap设置为null
tempMap=null;

tmp可用于交换引用,如下所示

        HashMap<Integer, String> hm = new HashMap<Integer, String>();
        HashMap<Integer, String> hm2 = new HashMap<Integer, String>();

        hm.put(3, "Mobile");
        hm.put(11, "Tab");

        hm2.put(4, "PC");
        hm2.put(1, "Laptop");

        HashMap tmp = new HashMap();
        tmp = hm;
        hm = hm2;
        hm2 = tmp;

        for(Map.Entry en:hm.entrySet()){
            System.out.println(en.getKey() + " " + en.getValue());
        }
        for(Map.Entry en:hm2.entrySet()){
            System.out.println(en.getKey() + " " + en.getValue());
        }
HashMap hm=newhashmap();
HashMap hm2=新的HashMap();
hm.put(3,“移动”);
hm.put(11,“标签”);
hm2.put(4,“PC”);
hm2.put(1,“笔记本电脑”);
HashMap tmp=新的HashMap();
tmp=hm;
hm=hm2;
hm2=tmp;
对于(Map.Entry en:hm.entrySet()){
System.out.println(en.getKey()+“”+en.getValue());
}
对于(Map.Entry en:hm2.entrySet()){
System.out.println(en.getKey()+“”+en.getValue());
}

谢谢,它很管用。。但是否建议交换唯一的键值?此处不确定您的问题,但在时间复杂的情况下,这会更好。请稍后将tempMap设为null或将其保留在堆栈上
        HashMap<Integer, String> hm = new HashMap<Integer, String>();
        HashMap<Integer, String> hm2 = new HashMap<Integer, String>();

        hm.put(3, "Mobile");
        hm.put(11, "Tab");

        hm2.put(4, "PC");
        hm2.put(1, "Laptop");

        HashMap tmp = new HashMap();
        tmp = hm;
        hm = hm2;
        hm2 = tmp;

        for(Map.Entry en:hm.entrySet()){
            System.out.println(en.getKey() + " " + en.getValue());
        }
        for(Map.Entry en:hm2.entrySet()){
            System.out.println(en.getKey() + " " + en.getValue());
        }