0

どういうわけか常に失敗する単純なルックアップをコーディングしています。さらに調べてみると、説明できないことがわかりました。文字列は同じですが、同じハッシュコードを取得していないようです。

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のバグですか?魔法のScala干渉が関係していますか?

環境:

  • Scala 2.10
  • 64ビットのOracleJava1.7.0_17およびOracleJava1.6.0_43
  • IntelliJ IDEA(最新のコミュニティバージョン)
4

1 に答える 1

7

fr.unice.i3s.modalis.jSeduite.technical.restaurant.CourseFinder

!=

fr.unice.i3s.modalis.jseduite.technical.restaurant.CourseFinder

jSeduite != jseduite

于 2013-03-25T11:59:05.810 に答える