Java 我可以将HashMap键和值交换到其他值吗?
我是Java新手,我想做的是将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,
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());
}