是否有类似“可逆字典”的内容?

时间:2016-05-10 01:02:27

标签: swift dictionary data-structures

我只想要一个与Dictionary类似的数据结构,但不仅可以使用键访问值,还可以使用值访问键。

所以它会是这样的:

let dict: ReversibleDictionary<String, String> = 
    ["1" : "one", "2" : "two", "3" : "three"]
dict.valueFromKey("1") // "one"
dict.keyFromValue("two") // "2"

是否有内置的快速内容?

如果没有,我怎么能自己创造这样的东西?

我尝试使用2 NSMutableOrderedSet创建一个并使用线性搜索来查找相应的值。但我认为使用线性搜索效率太低,这是O(n)复杂度。访问字典应该是O(1)复杂性,对吗?

1 个答案:

答案 0 :(得分:6)

不,没有内置的数据结构可以做到这一点。

但您可以轻松创建自己的数据结构,其中包含两个词典。当你添加到这个&#34; ReversableDictionary&#34;你只需要确保也添加第二个字典的反转。

然后在内部,您可以通过实施自己的dict.valueFromKey()dict.keyFromValue()方法

来执行相应的两个词典的查找

查找应该是O(1),代价是使用两倍的存储空间。