問題タブ [hashcode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 文字列フィールドの連結をハッシュ コードとして使用する必要がありますか?
次のような C# の Address クラスがあります。
私は平等を実装しているので、ハッシュコードをオーバーライドする必要があります。最初は EJ のハッシュコード式を使用するつもりでしたが、次のように考えました: これらはすべて文字列フィールドです。StringBuilder を使用してそれらを連結し、その文字列からハッシュ コードを返すことはできないのでしょうか?
あれは:
これの利点/欠点は何ですか? なぜ私はそれをすべきではないのですか?
java - JVM は System.identityHashCode() が変更されないことをどのように保証しますか?
通常、 のデフォルトの実装はObject.hashCode()
、メモリ内のオブジェクトの割り当てられたアドレスの関数です (ただし、これはJLSによって義務付けられていません)。VM がメモリ内でオブジェクトをシャントすることを考えると、System.identityHashCode()
オブジェクトの有効期間中に返される値が決して変わらないのはなぜですか?
それが「ワンショット」計算である場合 (オブジェクトhashCode
は 1 回計算され、オブジェクト ヘッダーなどに格納されます)、2 つのオブジェクトが同じものを持つ可能性があることを意味しますidentityHashCode
か?メモリ内の同じアドレス)?
java - ID に基づく Java ハッシュコード
Object.hashCode() のデフォルトの動作は、a == b の場合に限り、a.hashCode() == b.hashCode() となるように、本質的にオブジェクトの「アドレス」を返すことです。スーパークラスが既に hashCode() を定義している場合、ユーザー定義クラスでこの動作を取得するにはどうすればよいですか? 例えば:
アイデア?
java - Double in HashMap
Double を HashMap のキーとして使用することを考えていましたが、浮動小数点比較は安全ではないことを知っているので、考えさせられました。Double クラスの equals メソッドも安全ではありませんか? もしそうなら、それは hashCode メソッドもおそらく間違っていることを意味します。これは、Double を HashMap のキーとして使用すると、予期しない動作が発生することを意味します。
ここで私の憶測を確認できる人はいますか?
c# - プライベートメンバーのハッシュコードを組み合わせて新しいハッシュコードを生成することは可能ですか?
一意のハッシュを生成したい(GetHashCode()をオーバーライドした)オブジェクトがありますが、オーバーフローや予測できない何かを避けたいです。
コードは、文字列の小さなコレクションのハッシュコードを組み合わせた結果である必要があります。
ハッシュコードはキャッシュキーの生成の一部になるため、理想的には一意である必要がありますが、ハッシュされる可能性のある値の数が少ないため、ここでは確率が有利だと思います。
このようなもので十分であり、これを行うためのより良い方法はありますか?
編集:これまでの回答をありがとう。@Jon Skeet:いいえ、順序は重要ではありません
これはほとんど別の質問だと思いますが、結果を使用してキャッシュキー(文字列)を生成しているので、MD5のような暗号化ハッシュ関数を使用するか、このintの文字列表現を使用するのが理にかなっていますか?
c# - C#でGetHashCodeメソッドを作成する
C#のクラス用に独自のGetHashCodeメソッドを作成するための最良の方法は何ですか?次のような単純なクラス(Equalsメソッドをオーバーライドする)があるとします。
GetHashCodeメソッドにデフォルトのコードを使用する必要がありますか?
クラスの内容に基づいてメソッドを作成する必要がありますか?
それとも私は何か他のことをすべきですか?
java - 組み込み型の配列の java.util.Arrays.hashCode() 関数に相当する.NET?
int[]、short[]、float[] などの組み込み型の配列のjava.util.Arrays.hashCode()に相当する .NET ユーティリティ クラスはありますか?
もちろん、独自のユーティリティ クラスを作成することもできましたが、.NET フレームワークで既に利用可能なものを見つけようとしていました。
algorithm - ポイントのセットのハッシュコードを計算する最適な方法は何ですか?
二次元ポイントのセットのハッシュコードを計算する最適な方法を探しています (ポリゴンをハッシュテーブルに格納できるようにするため)。
文字列内のすべてのポイント座標とそのハッシュコードを連結するなど、いくつかの明白な方法がありますが、これは非常に遅くなります。
速度/衝突スペクトルの反対側では、たとえば、すべての座標を合計することもできます。これにより、非常に高速なコードが得られますが、多くの衝突も発生します。
ポイントのセットのハッシュコードを計算する最適な方法は何ですか?
座標が整数の場合 (対実際の座標)、最適解は異なりますか?
編集: 私は .net を使用しているため、ハッシュコードは 32 ビット長にする必要があります。