【发布时间】:2012-06-25 03:28:27
【问题描述】:
这个问题最初措辞错误,请参阅下面的编辑。我会把它留给上下文。
我一直在思考构建双射(即一对一)映射的聪明方法。映射函数 A->B(多对一)基本上是 HashMap(A,B) 所做的。如果我现在想要一个数据结构在 O(1) 中实现与 contains() 一对一的东西,我可以使用 java 标准库中的东西吗?请注意,我现在什么都不需要这个,这只是我最近想到的,无法想出一个数据结构,所以答案并不着急。有这样的课吗?如果不是,您认为这是什么原因?
我在 SO 上只能找到关于休眠的东西,这对我没有帮助。
编辑: 我的问题措辞不当,因此需要做出一些解释。
我的意思是“向后”映射 B->A。 HashMap(A,B) 在 O(1) 中包含 contains(A) 和 contains(B),所以这甚至不是我的意思,抱歉造成混淆。我的意思是,是否有一个数据结构映射 AB 在 O(1) 中具有 getValue(A) 和 getKey(B)?
我意识到这可以通过两个 HashMap (A,B) 和 (B,A) 来完成,它们被维护为包含相同的关系,但我认为应该有一个数据结构来处理它而不必这样做“手动”。
【问题讨论】:
-
只扩展类 A 并添加一个返回 B 的属性对你有用吗?
-
那么你想要 HashMap 没有做什么呢?它可以用于一对一的映射。
-
@PeterLawrey 是 java O(1) 中的 HashMap.contains 吗?
-
您是否正在寻找一对一映射的约束,因为 HashMap 可以用于一对一并且具有足够好的散列函数,并且足够小的集合将具有包含在摊销 O(1) 中。
-
我刚刚意识到我的问题并没有真正带来我想要的;编辑。
标签: java contains one-to-one