問題タブ [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 に答える
2020 参照

c# - .NET HashSetの内部実装にはメソッドが含まれていますか?

C#で記述されたライブラリのテストを作成しています。そして、2つのリストが同じ要素を持っている場合にのみ、同じであるかどうかをテストしたいと思います(同じ順序の要素は必要ありません)。リストをハッシュセットに変換して、2つのハッシュセットが同じかどうかを確認しようとしています。しかし、実行結果は私が期待したものではありません。

ハッシュセットにメソッドが含まれている方法を誰かが説明できますか?オブジェクトgetHashCodeメソッドまたはequalsメソッドによって2つのオブジェクトを比較しますか?ありがとう!

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

clojure - 不変性と実行時間の間の競合が Clojure でどのように処理されるかを理解するのを手伝ってください

Clojure は本当に私の興味をかき立てたので、それに関するチュートリアルを始めました: http://java.ociweb.com/mark/clojure/article.html

「Set」の下に記載されている次の 2 行を検討してください。

私が最初に考えたのは、2 番目の操作が完了するまで一定の時間がかかるはずだということでした。そうでなければ、関数型言語はオブジェクト指向言語よりもほとんど利点がないかもしれません。[ほぼ]空のセットから始めて、それにデータを入力して縮小する必要があることは容易に想像できます。したがって、新しい結果をより多くの手先に割り当てる代わりに、それ自体に再割り当てすることができます。

さて、関数型言語のすばらしい可能性により、副作用は気にする必要がなくなりました。そのため、これまでお互いに設定stoogesして動作するべきではありません。more-stoogesしたがって、 の作成more-stoogesは線形操作であるか、共通のバッファー (Java の のStringBufferような) を共有しますが、これは非常に悪い考えのように見え、不変性と競合します (その後stooges、要素を 1 つずつドロップする可能性があります)。

私はおそらくここで車輪を再発明しています。空のセットから始めて一度に 1 つずつ成長させるのではなく、最大数の要素から始めて、空のセットになるまで一度に 1 つずつ削除すると、hash-setパフォーマンスが向上するようです。clojure

上記の例はあまり実用的ではないように見えたり、回避策があったりするかもしれませんが、Java/C#/Python/etc のようなオブジェクト指向言語. 一度に1つまたはいくつかの要素を拡大または縮小しても問題はなく、高速に実行できます。

不変性を保証する(または約束するだけの)[関数型]言語では、セットをそれほど速く成長させることはできません。それを回避するのに役立つ別の慣用句はありますか?

に精通している人のためにPython、セット内包表記と同等のループ アプローチについて言及します。2 つの実行時間はわずかに異なりますが、それはC, Python, インタープリターの相対的な速度に関係しており、複雑さに起因するものではありません。私が見ている問題は、セット内包表記がより良いアプローチであることが多いということですが、常に最良のアプローチであるとは限りません。

質問が明確でない場合はお知らせください。

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

java - HashSet は、2 つのオブジェクトが同じであることを認識していないようです。

作成したクラスのオブジェクトを格納するために HashSet を使用しようとしていますが、どうやら同じオブジェクトに 2 つの異なるハッシュがあるように見えます。これにより、プログラムがヒープ メモリを使い果たします。

間違ったことはしていないと思いますが、とにかくセカンドオピニオンが欲しかったのです。私は以前に同様の操作を行ったことがありますが、すべて正常に機能していたため、これは特に面倒です。助けていただければ幸いです。

これが私のコードです

Move クラスは次のとおりです。

ここに私が得る出力があります

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

linq - HashSetをシリアル化するLinQを使用

HashSet<String>をとってエレガントに文字列に変換したいと思います。私はそのように繰り返すことができます:

LinQこれをエレガントかつ効率的に行う方法はありますか?

私がこれを行うことを考えることができる唯一の方法は、最初にそれを配列に変換することです:

しかし、それから私は二重変換を行っています。効率的で明確な便利でダンディなLinQ式はありますか?

回答1(マーのアイデアから)

列挙子を使用した回答2(Martinのソリューションから)

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

vb.net - リスト(文字列の)Vb.netを含むために必要なハッシュセットです

次のようになります。

より遅くなる

ハッシュセットは含まれていますか?

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

c# - .NETHashSetからインデックスで要素を選択します

現在、から派生したカスタムクラスを使用していHashSetます。特定の条件下でアイテムを選択すると、コードにポイントがあります。

それはうまく機能し、私はそれらの要素を取得します。ElementAtしかし、オブジェクト全体ではなく、コレクション内のその要素のインデックスを受け取ってメソッドで使用する方法はありますか?

それは多かれ少なかれこのように見えるでしょう:

コレクション全体を手動で繰り返す方が良い方法ですか?より大きなループ内にあることを追加する必要があるため、このWhere句はさまざまな文字列に対して複数回実行されsomeLabelます。

編集

これは何のために必要ですか?clustersいくつかのドキュメントコレクションのクラスターのセットです。ドキュメントは、トピックの類似性によってクラスターにグループ化されます。したがって、アルゴリズムの最後のステップの1つは、各クラスターのラベルを検出することです。ただし、アルゴリズムは完全ではなく、同じラベルを持つ2つ以上のクラスターを作成する場合があります。私がやりたいのは、それらのクラスターを大きなクラスターにマージすることです。

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

c# - base.Any(..) を使用すると、警告は次のとおりです。「HashSet」には「Any」の定義が含まれていません

クラスは HashSet から継承し、 のEqualKeys(T x, T y)代わりにカスタム チェックを使用して一意のオブジェクトのセットを取得しますIEqualityComparer

base.Anyに置き換える必要があるため、コードはコンパイルされませんthis.Any
私はそれがなぜなのか理解できないのではないかと心配していますか?

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

c# - すべての適切なサブセットを削除するにはどうすればよいですか?

セットのリストが与えられた...

別の適切なサブセットであるすべてのセットを削除するにはどうすればよいですか?

これはそれを行うための最良の方法ですか?

取り外した後、すべてが1つ下に移動すると想定しているため、デクリメントiしているので、そのスロットをもう一度確認する必要があります。

0 投票する
6 に答える
12620 参照

c# - HashSetsを減算します(そしてコピーを返します)?

私はHashSetを持っています、

そして、サブセットの束、

チャンクを減算したいのですが、これは次のように実行できます。

しかしExceptWith、その場で動作します。を変更したくありませんuniverse。最初にクローンを作成する必要がありますか、それとももっと良い方法がありますか?

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

java - Javaでハッシュセットをロックする

コードにオブジェクト参照の静的HashSetがあり、特定のメソッドが実行されるまですべての書き込み要求を禁止する必要があります(読み取り目的でのみハッシュセットを使用します)。スレッドの基本を読みましたが、これを実行する方法がまだわかりません。

誰か助けてくれませんか?