私は一意の文字列のセットを一意のIDに変換するScalaコードに取り組んでいます。私はHashCode()を適用しましたが、負の数があり、正の数だけで作業する必要があります。 負の値を取り除くためにmath.absを使用する必要があることはわかっていますが、これが正しい解決法であるかどうかはわかりません。私はその前に読めば 、このようなものは、どのように私は右の定数を決定することができますhashCode()を適用すると肯定的な結果しか得られないのですか?
math.abs(hashCode()) * constant % size
私の問題を解決するだろうか?サイズは文字列の総数を意味しますか?
これまでの質問ではmath.absのみを使用して問題を解決しましたが、文字列の総数が多い場合はオーバーフローが発生し、負の数を取得する可能性があります。結果に定数を掛けて、サイズのモジュレーションを取ることで助けになります。これが私が定数とサイズを決定する方法を理解する必要がある理由です。
また、ユニークな文字列のユニークな番号を取得する別の方法はありますか?
[ユニークIDにハッシュコードを使用する](https://stackoverflow.com/questions/21368492/using-hashcode-for-a-unique-id) – Piro
私の質問に対する回答はありませんでした上記の投稿。 – saad
Math.abs()を単独で使う考えには欠陥があります:常に正の数を返すわけではありません!また、ハッシュコードが一意ではないことも説明してください。 – Piro