出于性能原因,我需要将一组由字符串标识的对象分组。对象可以通过数字或前缀(限定)形式的字符串来标识,其中用点分隔标识符的各个部分:
12
323
12343
2345233
123123131
ns1:my.label.one
ns1:my.label.two
ns1:my.label.three
ns1:system.text.one
ns2:edit.box.grey
ns2:edit.box.black
ns2:edit.box.mixed
数字标识符从 1 到数百万不等。文本标识符很可能有很多以相同的名称空间前缀 (ns1:) 和相同的路径前缀 (edit.box.) 开头。
为此目的最好的散列函数是什么?如果我可以根据对象标识符统计信息以某种方式预测存储桶的大小,那就太好了。有没有一些好的文章可以根据一些统计信息构造好的散列函数?
有数百万个这样的标识符,但目的是根据散列函数将它们分成 1-2 千个组。