問題タブ [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.
java - HashSetの問題-等しいとhashCodewithcontainsは、私が期待したものとは異なる動作をします
私は次のコードを持っています:
出力は次のとおりです。11HashSetを使用:1 1 0
ただし、最終行もtrue
(1)になると思っていました。私が行方不明になっている明らかな何かがありますか。
(はい、私のequals
方法とhashcode
方法はいくつかの問題を考慮に入れていないことを知っています...それらは意図的に単純ですが、そこにある問題がこの問題を引き起こしている場合は私に知らせてください。)
java - Java: ジェネリックとコレクション型の検出に関する問題
さまざまなコンストラクターを持つ DataSet というクラスがあり、それぞれが異なる型の変数を指定しています。次のようになります。
注: 不完全な部分があるため、そのコードをまだテストしていません (現在作成中です)。
現在作成中の関数ではgetDataObjects()
、このセットが表すすべての DataObject オブジェクトを返す必要があります。クラスの HashSet を開始するコンストラクターの場合、(上記の など)Data
以外の型で、その中に格納されている DataObjects は明らかに存在しません。この場合、HashSet 'Data' が開始されたタイプを検出できる必要があります ('ObjectRelationship' であるかどうかを判断するなど)。どうすればいいですか?
tl;dr : コレクション (この場合は HashSet) がコード内で開始されたことを型に伝えるにはどうすればよいですか ('if' または 'switch' ステートメントなどを使用)。DataObject
ObjectRelationship
c# - 2 つの HashSet が等しいかどうか (参照ではなく値で) を判断するにはどうすればよいですか?
HashSet
.NET 3.5 (C#) の 2 つのオブジェクトが等しいセットであるかどうか、つまり同じ値が含まれているかどうかを判断しようとしています。これは明らかにやりたいことのように思えますが、提供されている関数のどれもこの情報を提供していないようです。
これを行うために私が考えることができる方法は、2 つのセットの数が等しく、 1 つのセットが他のセットのサブセット (適切ではない) であるかどうかを確認することです。起こり得る唯一の方法は、それらが等しいセットである場合だと思います。コード例:
これは常に機能しますか?より良い方法はありますか?なぜ機能がないHashSet
の public bool IsEqualSetWith()
ですか?
java - 反復中のセットの変更 java
私は再帰的な方法を反復的にしようとしています。
繰り返し処理したいオブジェクトのリストがあり、それらのサブオブジェクトをチェックします。
再帰的:
こんな感じに変えたい
擬似コードが貧弱で申し訳ありませんが、基本的には、チェックするリストの最後に新しいオブジェクトを追加しながら、サブオブジェクトを反復処理したいと考えています。
リストを使用してこれを行うことができ、次のようなことができます
しかし、重複するサブオブジェクトを追加したくありません。もちろん、追加する前に list.contains(each subObject) かどうかを確認することもできます。
しかし、私は Set を使用してそのクリーナーを実現したいと考えています。
したがって、基本的には、繰り返し処理中にセットに追加する方法がありますか、それとも手動で .contains() をチェックするのではなく、リストをセットのように動作させる簡単な方法はありますか?
コメントをお待ちしております。
ありがとう
c# - 既存の要素に対する HashSet のパフォーマンス Add と Contains
何らかの理由で、 要素が に既に存在する場合の操作よりも、 でのAdd
操作のHashSet
方が遅いようです。Contains
HashSet
ここに証拠があります:
既存の要素Contains
よりも速いのはなぜですか?Add
注:Stopwatch
別の SO の質問からこの拡張機能を使用しています。
更新: 内部テストにより、大きなパフォーマンスの違いは .NET フレームワークの x64 バージョンでのみ発生することが明らかになりました。フレームワークの 32 ビット バージョンでは、Contains を追加するのと同じ速度で実行されるように見えます (実際、contains を含むバージョンは、一部のテスト実行でパーセント遅く実行されるようです)。フレームワークの X64 バージョンでは、contains を含むバージョンは約 15% 速く実行されます。
java - HashSet からの削除は、反復後に失敗します
Java で凝集クラスタリング アルゴリズムを作成していますが、削除操作に問題があります。クラスターの数が初期数の半分に達すると、常に失敗するようです。
以下のサンプル コードでclusters
は、 はCollection<Collection<Integer>>
.
ループを数回実行すると、clusters.remove(minclust2)
最終的に false が返されますが、その理由はわかりません。
最初に 10 個のクラスターを作成して、このコードをテストしました。それぞれに 1 から 10 までの整数が 1 つずつあります。距離は 0 から 1 の間の乱数です。いくつかの println ステートメントを追加した後の出力を次に示します。クラスターの数の後に、実際のクラスター、マージ操作、および clusters.remove(minclust2) の結果を出力します。
[10, 9, 5, 6, 4, 5, 6, 4, ...] セットは、そこから無限に成長します。
編集:明確にするために、HashSet<Integer>
クラスター内の各クラスターに対してを使用しています(a HashSet<HashSet<Integer>>)
.
c# - C#で2セットのオブジェクトの違いを取得する方法はありますか?
C#の2セットのintの違いを取得したいと思います。s1とs2が与えられた場合、s2にはなくs1にあるintを返したいと思います。私は次のようなことをすることができます:
しかし、私は誰かがもっときれいなものを指摘できるかどうか疑問に思いました。こんなことをしたい
誰もが指摘できる可能性のある既存のメソッドまたはLINQ構造があるかどうかわかりませんか?ありがとうございました。
c# - ハッシュセットの使用C# Properties.Settings で
私が取り組んでいるゲーム用のいくつかの C# ツールを作成しており、「最近のファイル->」ドロップダウン メニューを追加しています。
問題は、VS2008 で C# の「設定」ページを取得して、型指定された HashSet を追加できないことです。それを行うオプションはありません。
私はすべてハッキングされ、「Settings.Designer.cs」ファイルを次のように手動で編集しました。
それはうまくいくようです。ただし、ある時点でコード ジェネレーターを使用してこれらの変更を無効にすることはわかっています。
これを行う正しい方法は何ですか?C# には、単純な HashSet ではなく、この機能に使用する必要がある組み込み型がありますか?