是否存在仅使用一种类型的双射数据结构,如果a -> b
那么b -> a
其中a和b属于同一类型?我查看了Guava的BiMap
和Apache Commons的BidiMap
,但两者都需要获取映射的反转以检查反向映射,而我希望它不重要。如果现有集合中没有一个,那么像这样的简单类是否可以解决问题,或者是否有任何问题:
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;
}
}