我正在寻找为特定字符串情况创建哈希码的最有效方法。
我有可以转换为整数的字符串,它们的范围从 1 到 10,000,并且非常集中在 1-600 范围内。
我的问题是,就从集合中检索项目并为其实现哈希码的性能而言,最有效的方法是什么。
我的想法是:
我可以将字符串转换为整数并使用直接访问表(10.000 行的数组) - 这对于检索来说非常快,但在内存分配方面不是很智能;
里>我可以将字符串用作字符串并获取它的哈希码(我不必将其转换为整数,但我不知道字符串的哈希码在碰撞方面有多有效)
任何其他想法都将不胜感激。
非常感谢
感谢大家的及时回复...
还有另一个信息我忘记添加了。我想如果我让你知道我的最终目标就会清楚地表明这一点 - 我什至可能不需要哈希表!!!
我只想根据不可变的字典验证流。我想检查给定的标签是否出现在我的消息中。
我将收到一个带有几对 tag=value 的字符串。我想验证我的应用程序是否必须处理该标签。
最佳答案
您可能需要考虑 trie (http://en.wikipedia.org/wiki/Trie) 或基数树 (http://en.wikipedia.org/wiki/Radix_tree)。无需将字符串解析为整数,或计算哈希码。当你行走在绳子上时,你就在行走一棵树。
编辑:
计算字符串的哈希码和从字符串中解析整数都涉及遍历整个字符串,然后使用该值查找特定的数据结构。其他技术可能涉及在遍历数据结构时同时检查字符串。这对于寻求“其他想法”的发帖者来说可能有值(value)。
关于java - 可转换为整数的字符串的哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10709584/