問題タブ [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.
c# - .NET HashSetの内部実装にはメソッドが含まれていますか?
C#で記述されたライブラリのテストを作成しています。そして、2つのリストが同じ要素を持っている場合にのみ、同じであるかどうかをテストしたいと思います(同じ順序の要素は必要ありません)。リストをハッシュセットに変換して、2つのハッシュセットが同じかどうかを確認しようとしています。しかし、実行結果は私が期待したものではありません。
ハッシュセットにメソッドが含まれている方法を誰かが説明できますか?オブジェクトgetHashCodeメソッドまたはequalsメソッドによって2つのオブジェクトを比較しますか?ありがとう!
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
, インタープリターの相対的な速度に関係しており、複雑さに起因するものではありません。私が見ている問題は、セット内包表記がより良いアプローチであることが多いということですが、常に最良のアプローチであるとは限りません。
質問が明確でない場合はお知らせください。
java - HashSet は、2 つのオブジェクトが同じであることを認識していないようです。
作成したクラスのオブジェクトを格納するために HashSet を使用しようとしていますが、どうやら同じオブジェクトに 2 つの異なるハッシュがあるように見えます。これにより、プログラムがヒープ メモリを使い果たします。
間違ったことはしていないと思いますが、とにかくセカンドオピニオンが欲しかったのです。私は以前に同様の操作を行ったことがありますが、すべて正常に機能していたため、これは特に面倒です。助けていただければ幸いです。
これが私のコードです
Move クラスは次のとおりです。
ここに私が得る出力があります
linq - HashSetをシリアル化するLinQを使用
HashSet<String>
をとってエレガントに文字列に変換したいと思います。私はそのように繰り返すことができます:
LinQ
これをエレガントかつ効率的に行う方法はありますか?
私がこれを行うことを考えることができる唯一の方法は、最初にそれを配列に変換することです:
しかし、それから私は二重変換を行っています。効率的で明確な便利でダンディなLinQ式はありますか?
回答1(マーのアイデアから)
列挙子を使用した回答2(Martinのソリューションから)
vb.net - リスト(文字列の)Vb.netを含むために必要なハッシュセットです
次のようになります。
より遅くなる
ハッシュセットは含まれていますか?
c# - .NETHashSetからインデックスで要素を選択します
現在、から派生したカスタムクラスを使用していHashSet
ます。特定の条件下でアイテムを選択すると、コードにポイントがあります。
それはうまく機能し、私はそれらの要素を取得します。ElementAt
しかし、オブジェクト全体ではなく、コレクション内のその要素のインデックスを受け取ってメソッドで使用する方法はありますか?
それは多かれ少なかれこのように見えるでしょう:
コレクション全体を手動で繰り返す方が良い方法ですか?より大きなループ内にあることを追加する必要があるため、このWhere
句はさまざまな文字列に対して複数回実行されsomeLabel
ます。
編集
これは何のために必要ですか?clusters
いくつかのドキュメントコレクションのクラスターのセットです。ドキュメントは、トピックの類似性によってクラスターにグループ化されます。したがって、アルゴリズムの最後のステップの1つは、各クラスターのラベルを検出することです。ただし、アルゴリズムは完全ではなく、同じラベルを持つ2つ以上のクラスターを作成する場合があります。私がやりたいのは、それらのクラスターを大きなクラスターにマージすることです。
c# - base.Any(..) を使用すると、警告は次のとおりです。「HashSet」には「Any」の定義が含まれていません
クラスは HashSet から継承し、 のEqualKeys(T x, T y)
代わりにカスタム チェックを使用して一意のオブジェクトのセットを取得しますIEqualityComparer
。
base.Any
に置き換える必要があるため、コードはコンパイルされませんthis.Any
。
私はそれがなぜなのか理解できないのではないかと心配していますか?
c# - すべての適切なサブセットを削除するにはどうすればよいですか?
セットのリストが与えられた...
別の適切なサブセットであるすべてのセットを削除するにはどうすればよいですか?
これはそれを行うための最良の方法ですか?
取り外した後、すべてが1つ下に移動すると想定しているため、デクリメントi
しているので、そのスロットをもう一度確認する必要があります。
c# - HashSetsを減算します(そしてコピーを返します)?
私はHashSetを持っています、
そして、サブセットの束、
チャンクを減算したいのですが、これは次のように実行できます。
しかしExceptWith
、その場で動作します。を変更したくありませんuniverse
。最初にクローンを作成する必要がありますか、それとももっと良い方法がありますか?
java - Javaでハッシュセットをロックする
コードにオブジェクト参照の静的HashSetがあり、特定のメソッドが実行されるまですべての書き込み要求を禁止する必要があります(読み取り目的でのみハッシュセットを使用します)。スレッドの基本を読みましたが、これを実行する方法がまだわかりません。
誰か助けてくれませんか?