0

マップをパラメーターとして取り、そのマップのキーと値を値とキーで置き換えるメソッドを書きたいと思います。私はこのようにしようとしています:

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");
       }    
}

このメソッドを使用すると、交換されたキーと値を持つ新しいマップ (map2) を取得できますが、map1 を交換したい

4

4 に答える 4

2

ホイールを再発明する必要はありません。Google コレクション ライブラリの Guava を使用すると、BiMap<K,V>.

これは、値の一意性とキーの一意性を保持するマップです。この制約により、bimap は「逆ビュー」をサポートできます。これは、この bimap と同じエントリを含むが、キーと値が逆になっている別の bimap です。

BiMapの実装EnumBiMap, EnumHashBiMap, [HashBiMap][2], ImmutableBiMap

于 2013-08-22T05:18:08.877 に答える
0

このコードを使用

public static ConcurrentHashMap<String, String> getMyMap(ConcurrentHashMap<String, String> m){
       ConcurrentHashMap<String, String> map2 = new ConcurrentHashMap<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");
    map1 = getMyMap(map1);
}
于 2013-08-22T05:21:26.687 に答える