問題タブ [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.
.net - ジェネリックで MethodBase を区別する方法
私はに基づいてキャッシュを持っています
キーは MethodBase.GetCurrentMethod からレンダリングされます。メソッドが明示的に宣言されるまで、すべてが正常に機能しました。しかし、ある日、次のことが明らかになりました。
T がまったく異なる型を取得した場合、辞書に同じエントリを作成します。
したがって、私の質問は、ジェネリック メソッドの値をキャッシュするより良い方法についてです。(もちろん、GetCache を提供するラッパーを提供することはできますが、ジェネリック型に遭遇した場合は同等ですが、この方法はエレガントに見えません)。
ここで私が正確に欲しいものを更新してください:
perl - 0..2^32-1の範囲の値を生成するPerlのクイック文字列チェックサム関数
次のプロパティを持つPerl文字列チェックサム関数を探しています。
- 入力:未定義の長さのUnicode文字列(
$string
) - 出力:符号なし整数(
$hash
)、0 <= $hash <= 2^32-1
保持(0〜4294967295、4バイトのMySQL unsigned intのサイズに一致)
擬似コード:
理想的には、チェックサム関数は実行が速く、衝突を回避するためにターゲット空間( 0
.. )である程度均一に値を生成する必要があります。2^32-1
このアプリケーションでは、ランダムな衝突は完全に致命的ではありませんが、可能な限り回避したいと思います。
これらの要件を考えると、これを解決するための最良の方法は何ですか?
java - Double.POSITIVE_INFINITY の hashCode
最近、Java で double のタプルのハッシュ コードを計算するときに奇妙な状況に遭遇しました。2 つのタプル (1.0,1.0) と (Double.POSITIVE_INFINITY,Double.POSITIVE_INFINITY) があるとします。Joshua Bloch の「Effective Java 」(項目 7) で述べられているイディオムを使用すると、これら 2 つのタプルは等しいとは見なされません (これらのタプルがオブジェクトであると想像してください)。hashCode()
ただし、項目 8 に記載されている式を使用して各タプルを計算すると、同じ値に評価されます。
私の質問は次のとおりです。この式について、式を書いているときに見逃した何か奇妙なことがありますか?それとも、ハッシュコードの衝突の奇妙なケースですか?
状況を説明するための短い比較方法を次に示します (JUnit4 テストとして記述しましたが、main
メソッドに変換するのは非常に簡単です)。
java - Java における変数のメモリアドレス
下の写真を見てください。キーワードを使用して Java でオブジェクトを作成するとnew
、OS からメモリ アドレスが取得されます。
書き込むout.println(objName)
と、「特別な」文字列が出力として表示されます。私の質問は次のとおりです。
- この出力は何ですか?
OSから与えられたメモリアドレスの場合:
a) この文字列をバイナリに変換するにはどうすればよいですか?
b) 1 つの整数変数アドレスを取得するにはどうすればよいですか?
java - ハッシュコードとイコール
equals
メソッドは一貫しhashCode
ている必要があります。つまり、2 つのオブジェクトがメソッドに従って等しい場合equals
、それらのhashCode
メソッドは同じハッシュ値を返す必要があります。
hashCode() メソッドをオーバーライドしない場合、Java は一意のハッシュ コードを返します。
行のコメントを外すとコンパイルエラーが発生するのはなぜですか?
オブジェクトのハッシュ コードが等しくない場合、既定のハッシュ コードが異なるのに等しいと表示されるのはなぜですか?
ruby - Ruby "foo" .hashに相当するPerlとは何ですか?
Ruby文字列のハッシュメソッドは、文字列の長さと内容に基づいて数値を返します。
Perlで同等のものは何ですか?
scala - 特性を持つケース クラスの equals/hashCode の Scala セマンティクス
私はScalaの初心者です。2.7.7 では、次のコード
版画
私が期待していたのに対し
私は何が欠けていますか?前もって感謝します。
java - Java ハッシュテーブルのハッシュ
Java Hashtable要素のhashCodeは常に一意ですか?
そうでない場合、1 回の検索で適切な要素が得られることをどのように保証できますか?
.net - 「int GetHashCode」は少し近視眼的ではありませんか?
.Net には IntPtr を介してビット数を検出する機能があることを考えると (リフレクターを調べると、かなりの量が安全でないとマークされていますが、残念です)、int を返す GetHashCode は近視眼的である可能性があると考えていました。
最終的には、優れたハッシュ アルゴリズムを使用すれば、Int32 によって提供される数十億の順列が完全に適切であることはわかっていますが、それでも、可能なハッシュのセットが狭いほど、より線形な検索が必要になるため、ハッシュされたキーの検索が遅くなります。
同様に、これが面白いと思うのは私だけですか?
一方、Int32 は単純に を返しますthis
。
パフォーマンスの問題で IntPtr が問題外である場合、おそらく IEquatable などを実装する IHashCode の方がよいでしょうか?
私たちのプラットフォームがメモリ容量、ディスク サイズなどの面でますます大きくなるにつれて、32 ビット ハッシュで十分な時代は確実に長くなる可能性があります。
それとも、インターフェースを介してハッシュを抽象化するか、プラットフォームに応じてハッシュのサイズを調整することに伴うオーバーヘッドが、潜在的なパフォーマンス上の利点を上回っているという単純なケースですか?
java - Overriding equals() & hashCode() in sub classes ... considering super fields
Is there a specific rule on how Overriding equals()
& hashCode()
in sub classes considering super fields ?? knowing that there is many parameters : super fields are private/public , with/without getter ...
For instance, Netbeans generated equals() & hashCode() will not consider the super fields ... and
will return true :(
If you want to see the Netbeans generated equals() & hashCode() :