問題タブ [hashmap]

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.

0 投票する
7 に答える
6066 参照

java - ハッシュマップ内のすべての MATCHING キーを効率的に反復しますか?

HashMap百万ものエントリがあります。

キーが特定の一連の基準に一致するすべてのエントリを取得する必要があります (この場合、各キーは 2 つの整数プロパティを持つオブジェクトです。これらの整数のそれぞれが指定された範囲内にあるすべてのキーを取得する必要があります)。

そのようなすべてのキーを反復処理する最も高速で効率的な方法は何ですか?

更新: この特定のケースでは、事前に指定しませんでしたが、キーの最初の整数が 2 番目の整数より自然に優先されます。

0 投票する
3 に答える
2173 参照

java - .put() を使用するたびに HashMap が上書きされます

私のアプリケーションは株式市場に関連しています。Price というオブジェクトを常に更新しているフィードがあります。Price には、セキュリティ コード (String) と price (Double) を格納する HashMap があります。新しい価格がこのオブジェクトに来るたびに更新されます。

アプリケーションは、大きな動きの価格をスキャンすることになっています。毎秒 Price オブジェクトをポーリングし、価格のスナップショットを取得する Poller という別のクラスがあります。スナップショットは、前述の HashMap です。次に、この価格の HashMap を pollNumber と共に別の HashMap に格納したいと思います。後で pollNumber を渡し、その pollNumber に対応する時点での価格を取得できます。

しかし、代わりに、以前のすべての価格が上書きされ、以下のような出力が得られます。

0 : {MSFT=17.67, AAPL=93.85, GOOG=333.86} {0={MSFT=17.67, AAPL=93.85, GOOG=333.86}}

1 : {MSFT=17.64, AAPL=93.85, GOOG=334.02} {0={MSFT=17.64, AAPL=93.85, GOOG=334.02}, 1={MSFT=17.64, AAPL=93.85, GOOG=334.02}}

2 : {MSFT=17.64, AAPL=93.85, GOOG=334.08} {0={MSFT=17.64, AAPL=93.85, GOOG=334.08}, 1={MSFT=17.64, AAPL=93.85, GOOG=334.08}, 2= {MSFT=17.64、AAPL=93.85、GOOG=334.08}}

3 : {MSFT=17.65, AAPL=93.83, GOOG=334.08} {0={MSFT=17.65, AAPL=93.83, GOOG=334.08}, 1={MSFT=17.65, AAPL=93.83, GOOG=334.08}, 2= {MSFT=17.65、AAPL=93.83、GOOG=334.08}、3={MSFT=17.65、AAPL=93.83、GOOG=334.08}}

4 : {MSFT=17.64, AAPL=93.83, GOOG=334.07} {0={MSFT=17.64, AAPL=93.83, GOOG=334.07}, 1={MSFT=17.64, AAPL=93.83, GOOG=334.07}, 2= {MSFT=17.64、AAPL=93.83、GOOG=334.07}、3={MSFT=17.64、AAPL=93.83、GOOG=334.07}、4={MSFT=17.64、AAPL=93.83、GOOG=334.07}}

ご覧のとおり、異なる価格シリーズを持つ HashMap 全体を印刷すると、それらはすべて同じです。

基本的に .put() 関数は古いエントリを何らかの形で上書きしています。

HashMap (大きなもの) が毎回新しい価格シリーズのエントリを持つように動作を修正する方法を知っている場合.



0 投票する
4 に答える
2227 参照

c++ - C++ stdext ハッシュマップの効率 - 再編成 (?)

stdext ハッシュマップに関連する非常に奇妙なことに直面しました。多くのオブジェクトを扱う必要があり、要素にすばやくアクセスすることが優先されます。私のプログラムはファイルからオブジェクト値を読み取り、それが新しい要素の場合は、この値をハッシュマップに挿入し、既に処理されたオブジェクトの場合は、ハッシュマップに格納されている値を変更します。

私の問題はに関連していhashmap(stdext)ます。このコンテナの初期化オプションが見つかりません。

キー要素は符号なし整数 ( uint64) であり、そのオブジェクトはこのキーを使用してハッシュマップに格納され、サイズは 160 KB です。
プログラムは動作していますが、hashmap 内のオブジェクトの数が制限に達すると、あまりにも待たなければなりません。

この後、期待どおり、ハッシュマップは再び正常に機能しています。多分それは再編成のステップだと思いました。

ただし、これらの手順は重要です。通常の処理手順は約 2 ~ 3 分ですが、特定の数のオブジェクトを処理した後、この手順を実行するには 5 時間かかります。この後、処理は「通常」になります。

誰もそのような問題に直面しましたか?このハッシュマップについてもっと詳しいことを知っている人はいますか? このトピックに関連するものは見つかりませんでした。


ハッシュマップ パラメータをデフォルト以外の値で使用しようとしています:bucket_sizeおよびmin_buckets. このデフォルト値はbucket_size=4min_buckets=8です。これらの値をコードから変更できなかったため、xhash ファイルでそれらをより大きな値に変更しました。私のアプリケーションではそれが重要だと思いますmin_buckets。再編成のステップを避けて、より良いパフォーマンスを得るために「微調整」しようとしています。

しかし、別の問題が発生したため、ハッシュマップをクリアしようとするまで、すべてが正常に機能します。時間がかかります。デフォルト値で使用すると、非常に高速に実行されます。

xhashファイルを変更するのは悪いステップでしたか? 以前にデフォルト以外の値を使用した人はいますか? この遅いクリアの理由は何ですか?

2 番目の質問は、ハッシュマップにポインターを格納することに関するものです。アイデアは明らかですが、ポイントされたメモリを解放するにはどうすればよいでしょうか。オブジェクトへのポインターを作成する必要があります。これらのポインターはハッシュマップに格納され、値が必要な場合は、このポインターを逆参照することができます。しかし、マップを保存した後、どうすればメモリをクリアできますか? 些細な質問かもしれませんが、今は解決策がわかりません。

すでに投稿された回答に感謝します。

0 投票する
9 に答える
2048 参照

java - HashMap から抽出された値の順序付きリストを作成するにはどうすればよいですか?

私の問題は、実際には質問が示唆するよりも微妙ですが、ヘッダーを簡潔にしたかったのです。

HashMap<String, File>値としてのFileオブジェクトがあります。キーは、インスタンスString nameの一部であるフィールドです。Fileの値を繰り返し処理しHashMap、単一の として返す必要がありますString

これは私が現在持っているものです:

これでうまくいきますが、理想的には、クラスのフィールドである の順に個別のFile値を追加したいと考えています。StringBuilderint fileIDFile

私がそれを十分に明確にしたことを願っています。

0 投票する
1 に答える
1462 参照

delphi - D2009 の CompareText 実装の高速化

私は自分のプログラムでハッシュ マップ データ構造を広く使用しています。Codegear フォーラムに投稿された Barry Kelly によるハッシュ マップの実装を使用しています。その実装は、RTL の CompareText 関数を内部的に使用します。プロファイリングにより、SysUtils CompareText 関数に多くの時間が費やされていることがわかりました。

私は見ていた

ファストコード サイト

そして、CompareText のより高速な実装を見つけました。残念ながら、D2009 とその Unicode 文字列では機能しないようです。

ここで質問があります: D2009 文字列をサポートする同様のより高速なバージョンはありますか? CompareText 関数は、ハッシュ マップを使用するときに (少なくとも私が現在使用している実装では) 頻繁に呼び出されるように思われるため、パフォーマンスを少し改善するだけで実際に違いが生じる可能性があります。それとも、そこに示されている実装はユニコード文字列でも機能するはずですか?

0 投票する
3 に答える
4252 参照

java - Dynamic-Mapエンティティモードを使用したHibernate保存について

次の例では、ロールの値をロードせずにid = 1のロールに保存するにはどうすればよいですか?私が試してみました:

しかし、その結果は次のようになります。

ロールを保存しません。コンソールに次のSQLが表示されます。Hibernate:ユーザー(ts、アドレス)の値に挿入(?、?)

どんな助けでも大歓迎です。

0 投票する
7 に答える
188695 参照

java - Java で空のマップを作成する最良の方法

空のマップを作成する必要があります。

問題は、上記のコードが次の警告を生成することです: Type safety: Unchecked cast from Map to HashMap

この空のマップを作成する最善の方法は何ですか?

0 投票する
3 に答える
2679 参照

c - これらの 2 つの状況に最適な C のデータ構造は?

学校のプロジェクトの締め切りの数時間前にそれを達成できるかどうかを確認するために、これを決定する必要がありますが、データ構造についてあまり理解していないため、提案が必要です...

私がしなければならないことが 2 つあります。それらはおそらく異なるデータ構造を使用するでしょう。

  1. プロファイル レコードを保持するためのデータ構造が必要です。プロファイルは、名前と社会保障番号で検索できる必要があります。SSN は独自のものなので、それを有利に利用できるでしょうか? ここではハッシュマップが最善の策だと思いますか? しかし、ハッシュ マップで SSN を使用して、特定のプロファイルを探す際の利点として使用するにはどうすればよいでしょうか? 基本的で分かりやすい説明は大歓迎です。

  2. 都市に関するレコードを保持するためのデータ構造が必要です。訪問者が最も多い都市、訪問者が少ない都市、および特定の都市を訪問するクライアント (クライアントに関するデータのプロファイルは #1 のデータ構造から取得されます)を知る必要があります。

これは私のプロジェクトに必要な 3 番目のデータ構造であり、どこから始めればよいか分からないデータ構造です。使用するデータ構造のタイプに関する提案は、可能であれば、上記のデータを太字で古いものにする方法の例とともに高く評価されます。

注:最初のデータ構造は既に完了しています (以前の質問
で話しました)。2 つ目はここ #1 に投稿されています。他のグループ メンバーが対応していますが、私たちがやろうとしていることが「最善の」アプローチであるかどうかを知る必要があります。3 番目は #2 で、私が最も助けを必要としているものです。

0 投票する
7 に答える
45806 参照

ruby - Ruby ハッシュ ホワイトリスト フィルター

あるフィルターから別のフィルターにキーと値のペアをフィルター処理する方法を理解しようとしています

たとえば、このハッシュを取得したい

ご協力いただきありがとうございます

編集: おそらく、この例では、ホワイトリスト フィルターとして動作するようにしたいことに言及する必要があります。つまり、私は自分が望んでいないことではなく、自分が何を望んでいるのかを知っています。