をキャスト対Math.Abs私はC# Collections上のビデオを見ての途中で、現在午前私の興味をそそった次のコードビットに出くわした:絶対値を取得するために、二回
int hashKey = (int)((uint)hashCode % capacity);
これはから変更されました第2の実施形態は、の元寄付それを残しながら、最初の実装は、の値とハッシュキー葉
int hashKey = Math.Abs(hashCode % capacity);
:前期待通りの結果
私は手動ので、私は次のように私は私の関数を呼び出すとき、その単語を含むバケットを取得することを期待私のハッシュテーブルに「こんにちは」の文字列を追加しました:ここ
LinkedString results = hash.GetAllAtHash("Hello".GetHashCode());
は完全ための機能です。
public LinkedString GetAllAtHash(int hashCode)
{
int hashKey = (int)((uint)hashCode % capacity);
//int hashKey = Math.Abs(hashCode % capacity);
return values[hashKey];
}
一方通行には意味がありますか?なぜ彼らはどちらも異なる値を返すのですが、私がビデオを見ていないと、コンパイルエラーやランタイムエラーが発生しない限り、何が間違っているのかをどのように伝えられましたか?
おかげ
タイトルが変更されました。一見すると、この質問は「double」データ型との間のキャストに関係していると考えました。 – spender
私たちが必要とするのは、反復可能な計算がバケット間で公平に分配されることだけです。重要なのは、この計算がストレージと検索の両方で一致するということです。 – spender