問題タブ [hashset]

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 投票する
1 に答える
389 参照

.net - ハッシュセットと、すべてのメンバーが同一のクラスの異なるインスタンス

myclass というクラスがあるとします。

私のコードには、myclass の 2 つのインスタンス、myclass1 と myclass2 があります。それらについてのすべては、(パブリックおよびプライベート)プロパティが同一であることです。

それらの両方を HashSet に追加しようとすると、両方または 1 つだけが追加されますか? 両方を追加したくない場合は、myclass 定義で equals を上書きできますか? HasSet はそれを使用する方法を知っていますか?

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

c# - C#でオブジェクトのリストを返す最速の方法は何ですか?

3D モデリング プログラムのプラグインを作成しています。表示パイプラインをインターセプトし、実際にモデル内になくても表示される追加のジオメトリを挿入できる API の機能があります (表示はできますが、選択/移動/削除などはできません)。 .

API のこの機能の一部は、表示する追加のジオメトリをプログラムに伝えるために使用される、画面が更新されるたびに呼び出されるメソッドです。現在、foreach ステートメントで反復処理されるHashSetがあります。OnBrepは、API の汎用ジオメトリ クラスです。

「ゴースト」ジオメトリを実際のモデルにダンプする追加のコマンドがあります。ジオメトリが実際にモデル内にある場合、表示が大幅に高速化されることがわかりました。それで、オブジェクトのリストをプログラムに提供するより速い方法があるかどうか疑問に思っていますか? 単純な 1 次元配列は、HashSet<> よりも大幅に高速でしょうか?

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

java - Java プログラム構造に関するアドバイス

私は最初のオブジェクト指向プログラムとして、Java で RSS リーダーを構築し、並べ替えています。OO 設計のヒントがあれば幸いです。

RSS フィード用の Feed オブジェクトのリストを持つ Reader クラスがあり、各 Feed はニュース項目を Articles リストの Article オブジェクトにダウンロードします。

私がやりたいことは、複数の情報源からの記事を関連付ける方法を見つけることです。これを行うには、各記事にキーワードの HashSet があり、すべての記事のキーワードを相互に比較して、一致したキーワードの数を記録したいと考えています。2 つの記事間のカウントが非常に多い場合は、それらをグループ化して出力したいと考えています。

記事の「多対多」(?) 比較を行い、相対スコアを追跡する効率的な方法は何ですか?

0 投票する
2 に答える
23427 参照

c++ - 簡単なC++hash_setの例

私はC++とSTLを初めて使用します。カスタムデータ構造を格納するハッシュセットの次の簡単な例に固執しています。

コンパイルしようとすると、次のエラーメッセージが表示されます。

私は何が間違っているのですか?

0 投票する
14 に答える
317449 参照

java - ハッシュセットとツリーセット

私は昔から木が好きで、O(n*log(n))その美しさと整頓された状態が好きです。しかし、私がこれまでに知っているすべてのソフトウェア エンジニアは、なぜTreeSet. CS の背景から、私はあなたが何を使うかはそれほど重要ではないと思いますし、ハッシュ関数やバケット (の場合Java) をいじるのは気にしません。

どのような場合に aHashSetよりも aを使用する必要がありTreeSetますか?

0 投票する
5 に答える
32113 参照

c# - C#でアイテムを削除しながら反復するHashSet

C#にハッシュセットがあり、ハッシュセットの反復中に条件が満たされた場合に削除しますが、以下のようにforeachループを使用してこれを行うことはできません。

では、反復中に要素を削除するにはどうすればよいですか?

0 投票する
12 に答える
27962 参照

c# - 列挙せずに HashSet からアイテムを取得できないのはなぜですか?

HashSet 設計者の頭の中への洞察を探しています。私が知る限り、私の質問は Java と C# HashSets の両方に当てはまるので、自分では考えられませんが、それには正当な理由があるに違いないと思います。

項目を HashSet に挿入した後、その項目を列挙せずに取得することが不可能であり、ほとんど効率的な操作ではないのはなぜですか? 特に、HashSet は効率的な検索をサポートする方法で明示的に構築されているためです。

Remove(x) と Contains(x) が、削除または含まれている実際のアイテムを返すようにすると便利なことがよくあります。これは、必ずしも Remove(x) または Contains(x) 関数に渡す項目ではありません。確かに、HashMap を使用して同じ効果を達成できると思いますが、セットでこれを完全に実行できるはずなのに、なぜそのすべてのスペースと労力を無駄にするのでしょうか?

この機能を追加すると、フレームワークでの役割または将来の役割と一致しない HashSet の使用が可能になるという設計上の懸念があることは理解できますが、そうである場合、これらの設計上の懸念は何ですか?

編集

さらにいくつかの質問に答えるために、詳細を以下に示します。

C# で値の型をエミュレートするために、オーバーライドされたハッシュコード、equals などで不変の参照型を使用しています。型にメンバー A、B、および C があるとします。ハッシュコード、equals などは A と B のみに依存します。A と BI がハッシュセットから同等の項目を取得して C を取得できるようにしたい場合、私はしません。これには HashSet を使用できないようですが、少なくともこれに正当な理由があるかどうかを知りたいです。疑似コードは次のとおりです。

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

c# - 順序を保持する HashSet

挿入順序を保持する HashSet が必要です。フレームワークにこれの実装はありますか?

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

c# - 値オブジェクトの IEqualityComparer

IPathwayModule という不変の値オブジェクトがあり、その値は次のように定義されています。

  • (整数) ブロック。
  • (エンティティ) モジュール。(文字列) ModuleId で識別されます。
  • (列挙) ステータス。と
  • (エンティティ) (文字列) ClassId で識別されるクラス - null の場合もあります。

これは、いくつかの単体テストで機能するように見える現在の IEqualityComparer 実装です。しかし、自分が何を正しく行っているかを十分に理解しているとは思えません。以前の実装では、繰り返しテストを実行すると失敗することがありました。

IPathwayModule は間違いなく不変であり、同じ値を持つ異なるインスタンスは等しく、同じ HashCode を生成する必要があります。それらは HashSet 内の項目として使用されるためです。

私の質問は次のとおりです。

  • この場合、インターフェイスを正しく使用していますか?
  • 望ましい動作が見られない場合はありますか?
  • 堅牢性、パフォーマンスを向上させる方法はありますか?
  • 私が守っていない良い習慣はありますか?