問題タブ [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.
java - Java、Object.hashCode() の結果はすべての JVM/システムで一定ですか?
の出力はObject.hashCode()
、同じオブジェクトのすべての JVM 実装で同じである必要がありますか?
たとえば、1.4 で"test".hashCode()
返される場合、1.6 で実行さ1
れる可能性があります。2
または、オペレーティング システムが異なっていたり、インスタンス間のプロセッサ アーキテクチャが異なっていたりするとどうなるでしょうか?
c# - GetHashCodeの問題
誰かが次のことを説明するのを手伝ってもらえますか?オブジェクトとオブジェクトの両方が成功しているContainsKey
ときにfalseと評価される辞書に問題があります。以下は、VisualStudioのイミディエイトウィンドウからの出力です。Equals
GetHashCode
私は何かが足りないのですか?どんなアイデアでも大歓迎です。
c# - .Net ハッシュ コードは永続的ではなくなりましたか?
さまざまなタイプのカスタム ハッシュ コードを持つ API があります。これらのハッシュ コードは、問題のオブジェクトの文字列表現のハッシュの取得に基づいています。可能な限りハッシュ コードが衝突しないように、また、同等の文字列表現を持つ異なるタイプのオブジェクトが異なるハッシュ コードを持つように、さまざまなソルティング手法が使用されます。
明らかに、ハッシュ コードは文字列に基づいているため、いくつかの衝突があります (無限の文字列と 32 ビット整数の制限された範囲)。私はハッシュをセッション間で保持する必要があり、特にオブジェクトのデータベース ストレージで使用するために、文字列表現に基づくハッシュを使用します。
突然、今日私のコードはオブジェクトのさまざまなハッシュ コードを生成し始め、あらゆる種類のものを破壊しています。それは今日の早い段階で機能していましたが、ハッシュ コードの生成に関連するコードには一切触れていません。
.Net のドキュメントでは、.Net フレームワークのバージョン間 (および 32 ビット バージョンと 64 ビット バージョンの間) で変更するハッシュ コードの実装が許可されていることは承知していますが、私はフレームワーク バージョンを変更しておらず、フレームワークの更新も最近ありません。私が覚えているように
これは本当に奇妙に思えるので、何かアイデアはありますか?
編集
ハッシュコードは次のように生成されます。
java - ConcurrentHashMapコンストラクターパラメーター?
私は:を構築するためのパラメータについて疑問に思っていますConcurrentHashMap
:
initialCapacity
デフォルトでは16です(理解されています)。loadFactor
デフォルトでは0.75です。concurrencyLevel
デフォルトでは16です。
私の質問は次のとおりです。
- 上または下に調整するには、どのような基準を使用する必要があります
loadFactor
か? - 同時に更新するスレッドの数をどのように確立しますか?
- 上または下に調整するには、どのような基準を使用する必要があります
concurrencyLevel
か?
さらに:
- 優れたハッシュコード実装の特徴は何ですか?(SOの質問がこれに対処している場合は、それにリンクするだけです。)
ありがとうございました!
java - Java: リストの値に基づいて一意の配列を確実に保存する方法
Object[] の 1 次元配列が多数あります (これらのオブジェクトは、役立つ場合はプリミティブ型です)
これらの配列をリストに格納したいのですが、残りの配列とは一意の内容を持つ配列のみです。
私の最初の近似は、Arrays.hashCode(array) の値をセットに格納する配列を反復処理し、値がセットに含まれていない場合にのみ、目的のリストに配列を格納することでした。
しかし後で、内容が異なる2つの配列が同じハッシュコードを生成できることに気付きました(頻繁ではないことを願っています)
誰でも助けることができますか?
非常に頻繁にハッシュコードの衝突 (異なるコンテンツからの同じハッシュコード) を期待できますか?
java - JPAとHibernateを使用する場合、equalsとハッシュコードをどのように実装する必要がありますか
モデルクラスのequalsとハッシュコードをHibernateでどのように実装する必要がありますか?よくある落とし穴は何ですか?ほとんどの場合、デフォルトの実装で十分ですか?ビジネスキーを使用する意味はありますか?
遅延フェッチ、ID生成、プロキシなどを考慮に入れると、あらゆる状況で正しく機能させるのはかなり難しいように思われます。
java - Google App Engine、JDO、equals/hashCode
Google App Engine で正常に動作するアプリを入手しました。equals と hashCode を実装するのを忘れていた JDO 拡張オブジェクトの 1 つに気付きました (オブジェクトをセットで使用する必要があります)。だから私はしました。これらの実装で特別なことは何もしていません。実際、Eclipse を使用してそれらを生成しただけです。そのようです:
そのため、アプリで任意の URL にアクセスしようとすると、次の例外がスローされます。
/addUser javax.jdo.JDOUserException: Persistent class "クラス com.bpapa.myapp.domain.User は拡張されていないようです。エンハンサーを再実行して、出力のエラーを確認してください。" データベースにテーブルがありませんが、操作にはテーブルが必要です。このクラスの MetaData の仕様を確認してください。org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:427) で org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:249) で com.bpapa.myapp.servlet.AddUserServlet.doPost(AddUserServlet.java) :34)
私が間違ったことについてのアイデアはありますか?
c# - すばやく簡単なハッシュ コードの組み合わせ
2 つのオブジェクトのハッシュ コードを結合するための迅速かつ簡単な方法を推奨できますか? 私はそれを効率的に処理するハッシュテーブルを持っているので、衝突についてあまり心配していません。できるだけ早くコードを生成するものが欲しいだけです。
SO と Web を読むと、主な候補がいくつかあるようです。
- 排他的論理和
- 素数乗算による XOR 演算
- 乗算/除算などの単純な数値演算 (オーバーフロー チェックまたはラップ アラウンドを使用)
- String を作成してから String クラスの Hash Code メソッドを使用する
人々は何を推奨し、その理由は何ですか?
algorithm - 同様の入力を同様の出力にマップするハッシュ関数?
入力の小さな変化が出力の小さな変化になるハッシュ関数はありますか? たとえば、次のようなものです。
.net - GC がオブジェクトを移動するとき、Object.GetHashCode はどのように機能しますか?
私が正しく理解していれば、.NET のデフォルトの実装はObject.GetHashCode()
、オブジェクトのメモリ アドレスに基づいて値を返します (少なくとも参照型の場合)。ただし、ガベージ コレクターはメモリ内でオブジェクトを自由に移動できます。おそらく、GC がオブジェクトを移動したからといって、ハッシュ コードは変更されないので、この相互作用に特別な処理があるのでしょうか、それとも私の仮定が間違っているのでしょうか?