假设我有一些查找表q(w, x, y, z)
,其中各种键组合映射到不同的值;即,q(0, 0, 0, 0) = a
,q(0, 0, 0, 1) = b
,q(15, 16, 23, "b") = c
。
在效率方面,在Ruby中实现此结构的最佳方法是什么?密钥将动态生成,通常是字符串。我可以想到哈希的三种不同的键控方法:
q["a, b, c, d"] = 0
q[["a", "b", "c", "d"]] = 0
q["a"]["b"]["c"]["d"] = 0
我目前正在使用方法2,它比我想要的慢一点。这些键组合是动态生成的 - 如果我使用一个带有单个字符串的哈希,字符串连接会更快吗?我应该首先开始使用散列哈希吗?这种方法会在内存中占用更多空间吗?
答案 0 :(得分:1)
我会选择类似你的#1:创建一个字符串,然后它将作为你的地图密钥。但是,请确保您的“代理哈希键”对于各种值组合都是适当的唯一。在这种情况下,您只需构建一个简单的字符串并需要一个映射。
一般来说,您希望地图键尽可能不可变。 (一个关键的变异可能搞砸了桌子)。有时凌乱的Ruby因为字符串是可变的但仍然是一个有价值的目标。