各キーがmap1に一意の値を持つ場合にのみ、キーと値のペアをmap1からmap2に転送する方法に固執しています。
次のマップがあるとします。
- map1: [1,2] [2,4] [4,4]
- map2: [1,2] [2,4]
アルゴリズムは次のようになると思います。
- 最初のマップのエントリをループします。
- map2 にキーを追加します。
- map2 の値に対してチェックするセットに値を追加します
- 値が重複している場合、値はセットに追加されず、対応するキーを map2 に追加することは無視されます。
コードスニペット:
public static <K,V> Map<K,V> unique (Map<K,V> m) {
Map<K,V> newMap = new ArrayMap<K,V>();
//Remember all values in the newMap.
Set<V> holding = new ArraySet<V>(newMap.values());
for (Map.Entry<K, V> graphEntry : m.entries()) {
//not sure.
}
return newMap;
}
正しい軌道に乗せる方法についての私の考えはありますか?ここでかなり迷った。