我需要一个Key-Value对的内存数据结构(400 MB的数据)。我对密钥有以下约束:
使用DS获取字符串键会使密钥比较过于昂贵。因此,DS(Hash,B + Tree)的某些选项被排除在外。
我的问题是我们如何创造性地将String键转换为整数键?解决方案需要具有以下属性:
对于关键模式" k1k2k3。*"它应该对整数的上限和下限进行生成,以便根据这些边界在DS中查找少量条目。
的背景下提出这个问题答案 0 :(得分:3)
每个k(i)有6-8种可能性。然而,k3和k4有256000种可能性。
如果你可以在k1 k2 k3 k4 k5中拆分键,你可以这样编码:
3 bits for k1
3 bits for k2
18 bits for k3
18 bits for k4
3 bits for k5
这使得45位。 因此,您可以将键缩小为0到2 ^ 45-1之间的整数。 如果你只使用k3和k4的一些可能值,这种接缝就会很多。
所以我将k1 k2的6位用于精确映射到索引,而不是取决于k3 k4的密集程度,k3和k4的某种树结构以及再次精确映射到k5的索引