Is there a way to swap two keys in a map in Java?
ex. for list there is Collections.swap(ArrayList,1,开发者_高级运维2);
You can use this one liner:
map.put('a', map.put('b', map.get('a')));
If you need to handle boundary cases, like one of the keys not actually being in the map, you can do something like this:
public static <K,V> void swap(Map<K, V> map, K k1, K k2) {
if (map.containsKey(k1)){
if (map.containsKey(k2)){
map.put(k1, map.put(k2, map.get(k1)));
} else {
map.put(k2, map.remove(k1));
}
} else if (map.containsKey(k2)){
map.put(k1, map.remove(k2));
}
}
Otherwise, use the on-liner in Abdullah Jibaly's answer.
精彩评论