gpt4 book ai didi

java - 在 O(1) 中与 getKey(B) 一对一映射数据结构 (A,B)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:59:45 27 4
gpt4 key购买 nike

这个问题最初措辞不当,请参阅下面的编辑。我会把它留给上下文。

我一直在思考构建双射(即一对一)映射的巧妙方法。映射函数 A->B(多对一)基本上就是 HashMap(A,B) 所做的。如果我现在想要一个数据结构来实现与 O(1) 中的 contains() 一对一的东西,我可以使用 java 标准库中的东西吗?请注意,我现在什么都不需要这个,这只是我最近想到的事情,无法想出一个数据结构,所以答案并不着急。有这样的类(class)吗?如果不是,您认为这是为什么?

我在 SO 上能找到的都是关于 hibernate 的东西,那对我没有帮助。

编辑:我的问题措辞不当,因此需要做出一些解释。

我的意思是“向后”映射 B->A。 HashMap(A,B) 在 O(1) 中包含 contains(A) 和 contains(B),所以这甚至不是我的意思,很抱歉造成混淆。我的意思是,是否存在一个数据结构映射 A<->B,它在 O(1) 中具有 getValue(A) 和 getKey(B)?

我意识到这可以通过维护包含相同关系的两个 HashMap (A,B) 和 (B,A) 来完成,但我觉得应该有一个数据结构来处理它而不必这样做“手动”。

最佳答案

我认为您不会比两个 HashMap 做得更好。编写包装器接口(interface)非常简单:

class OneToOneMap<Key, Value> {

public void add(Key k, Value v) {
if (!keyToVal_.contains(k) && !valToKey_.contains(v)) {
keyToVal_.add(k, v);
valToKey_.add(v, k);
}
}

private HashMap<K, V> keyToVal_;
private HashMap<V, K> valToKey_;
}

我不确定这是否是有效的 Java,但你明白了。

关于java - 在 O(1) 中与 getKey(B) 一对一映射数据结构 (A,B)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11162843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com