欢迎。 我有一个通用的void方法交换,它接受一个Map和2个键。该方法将交换与Map中的键相关联的值。我已经检查过两个键都包含在Map的其他地方,但在这个方法中,我不能使用循环。 我的方法回答:
public static<K, W> swap(Map<K,V m, K key1, K key2>){
m.put(key2, m.put(?)) // I don't really understand what I would have to
// put in this part, so how would i have to remember
// the 1st key, would I just set the value to
// a new initialized key?
}
答案 0 :(得分:9)
使用临时持有人获取价值:
public static<K, V> swap(Map<K,V> m, K key1, K key2){
V value = m.get(key1);
m.put(key1, m.get(key2));
m.put(key2, value);
}
答案 1 :(得分:3)
m.put(key2, m.put(key1, m.get(key2))
......会奏效。 put(..)返回已存在于映射中的该键的先前值,然后该值将与key2关联。你可以不使用局部变量来做到这一点;但是这段代码有点难以理解,变量可能会使代码的意图更加清晰。
答案 2 :(得分:2)
这将交换两个键的值:
Map<K, V> aMap;
V temp = aMap.get(key1);
aMap.put(key1, aMap.put(key2, temp);
答案 3 :(得分:1)
此方法将值交换为两个键:
public void swap(Object key1, Object key2, Map map)
{
Object temp = map.get(key1);
map.put(key1, map.get(key2));
map.put(key2, temp);
}
是的,您需要保存其中一个键的值,否则在用key2替换key1的值时会丢失。
答案 4 :(得分:0)
您必须使用临时持有人获取价值:
公共静态交换(Map m,K key1,K key2){V value = m.get(KEY1); m.put(KEY1, m.get(KEY2)); m.put(key2,value); }