java - 可转换为整数的字符串的哈希码

标签 java string int hashcode

我正在寻找为特定字符串情况创建哈希码的最有效方法。

我有可以转换为整数的字符串,它们的范围从 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/

相关文章:

java - Android Studio : Unsupported major. 次要版本 52.0

java - 从异步任务获取空响应,响应代码为 200,这意味着成功

C 在 void 函数中反转单个字符串中的两个单词

java - 如何反转 Java String 的单词

c - 关于运营商 "&"的问题

java - 对数字(float)进行舍入以将其存储为 int,而不使用像 math.round() 这样的 math.packe

java - Java 应用程序退出时刷新

java - 带有自己类的 NullPointerException

javascript - 日期范围选择器中的 JS 格式日期

python - 了解 Python 中大整数的内存分配