1

基本的に、Objects クラスの hasCode() を使用して、いくつかの文字列のハッシュ コードを取得しています。

その数値が配列内の位置を表すようにします。基本的にハッシュテーブル。このためのコードはまだ書いていません。

私は念頭に置いていました:

 int hashNumber = SomeString.hascode(), pos; 
 String array[] = new String[10];

 if (hashNumber > 0)
   pos = hashNumber % array.length
 if (hasNumber < 0 )
   //dont know what to do

hashCode が負の整数を返す可能性があることは知っています。負の整数の場合はどうすればよいですか? 私は配列の長さを追加することについて

  pos = hashNumber + array.length

これが最善の方法ですか?

前もって感謝します

4

2 に答える 2

3

が負の場合は、 (正になる)hashNumberの mod を取得します。-hashNumber

if (hashNumber >= 0)
  pos = hashNumber % array.length
else
  pos = -hashNumber % array.length

または、両方で機能する単一の式の場合:

pos = (hashNumber % array.length + array.length) % array.length

mod と負の数を使用した Java の動作に関する質問に対するこの回答を参照してください。

于 2013-01-25T17:48:11.303 に答える
0

http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.17.3

結果の符号は被除数の符号と同じです。

詳細については、こちらを参照してください: Java は負の数で係数を計算する方法を教えてください。

安全のために、単に使用できますpos = Math.abs(hashNumber) % array.length

于 2013-01-25T19:25:16.590 に答える