This question already has answers here:
How to swap keys and values in a Map elegantly
                                
                                    (8个答案)
                                
                        
                6年前关闭。
            
        

我想编写一个将映射作为参数并用值和键替换该映射的键和值的方法。我正在尝试这样做:

public class HashMapKeyValueInterchange{
       public static Map<String, String> getMyMap(ConcurrentHashMap<String, String> m){
           Map<String, String> map2 = new HashMap<String, String>();
           for(Entry<String, String> e:m.entrySet()){
               map2.put(e.getValue(), e.getKey());
           }
           return map2;
       }

       public static void main(String[] args) {
           ConcurrentHashMap<String, String> map1 = new ConcurrentHashMap<String, String>();
           map1.put("ajay", "btech");
           map1.put("manas", "mca");
           map1.put("ashu", "mba");
       }
}


使用此方法,我可以获取具有交换的键和值的新map(map2),但我希望可以交换map1

最佳答案

它是可用的,不需要重新发明轮子,如果您使用Google收藏库Guava,则可以使用BiMap<K,V>


  它是一幅地图,保留了其价值的独特性以及
  它的密钥。此约束使bimap可以支持
  “反向视图”,这是另一个bimap,其中包含与
  此bimap,但具有相反的键和值。


BiMap的实现是EnumBiMap, EnumHashBiMap, [HashBiMap][2], ImmutableBiMap

10-06 03:35