是否存在任何仅使用一种类型的双射数据结构,这样如果a -> b
ab -> a
和 b 属于同一类型?我看过BiMap
Guava 和BidiMap
Apache Commons,但两者都需要获取地图的逆来检查反向映射,而我希望这无关紧要。如果现有集合中没有一个,那么像这样的简单类是否可以解决问题,或者这有什么问题:
public class BiHashMap<T> extends HashMap<T, T> {
@Override
public T put(T key1, T key2) {
T removed = remove(key1);
remove(key2);
super.put(key1, key2);
super.put(key2, key1);
return removed;
}
@Override
public T remove(Object key) {
T mapped = super.remove(key);
super.remove(mapped);
return mapped;
}
}