我正在编码一个简单的查找,总是失败。进一步调查,我发现了一些我无法解释的东西:似乎虽然我的字符串是相同的,但它们不会得到相同的哈希码。相同的字符串,不同的哈希码
fr.unice.i3s.modalis.jSeduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A536564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash code: 1515256474
fr.unice.i3s.modalis.jseduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A736564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash Code: 2099127532
用Java 6重复实验,我遇到了类似的问题。需要注意的是无论哪种方式,事情并非常数:
fr.unice.i3s.modalis.jSeduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A536564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash code: 1515256474
fr.unice.i3s.modalis.jseduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A736564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash Code: - 1772912571
我的代码依赖于这场比赛,我不想跑.equals(),因为它很可能是太慢了。
据我所知,散列码对于相同的字符串应该是相同的。这是JVM中的错误吗?是否有一些神奇的斯卡拉干涉?
环境:
- 斯卡拉2.10
- 64位Oracle的Java 1.7.0_17和Oracle的Java 1.6.0_43
- 的IntelliJ IDEA(最新的社区版)
你也可以说产生了不同的哈希码的代码? – Axel 2013-03-25 11:58:37
你在使用什么哈希库?线程安全吗? – iamsleepy 2013-03-25 11:59:40
你能告诉我们实际的字符串,所以我们可以检查他们的hashcode吗? – 2013-03-25 12:08:58