問題タブ [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# - WCFのHashSet
WCFインターフェイスでHashSetを使用しています
サービス参照を作成すると、HashSetはint[]に変わります。
ServiceKnownTypeを追加しました:
いくつかの構成を試しましたが、完全に変更することはできませんでした。
変更すると、すべてが機能するようにハードコーディングされていますが、参照を更新するたびに変更するのは本当に面倒です。
私はおそらく何か間違ったことをしている、何か指針やアイデアはありますか?
c# - オブジェクトがハッシュセットによってハッシュされる方法を制御するにはどうすればよいですか
HashSet<T>
オブジェクトのコレクションを格納するためにを使用しています。これらのオブジェクトにはすでに一意のIDが付いているSystem.Guid
のでHashSet<>
、オブジェクトをハッシュする方法を理解しようとするのではなく、既存のIDを使用する方がよいでしょう。ビルドインハッシュをオーバーライドして、プログラムにビルドインID値をハッシュ値として使用させるにはどうすればよいですか?
Guid
また、自分のオブジェクトのを知っていると言いますが、これだけに基づいてHashSet<>
オブジェクトを取得する方法はありますか?または、代わりに辞書を使用する必要があります。HashSet<T>
Guid
c# - HashSet IntersectWith は単語を数えますが、一意のみです
フォームとテキスト ファイルで richtextBox コントロールを取得しました。テキストファイルを配列に取得richtextbox1.text
し、それを比較して一致する単語をカウントするよりも他の配列に取得しています。
しかし、たとえば、テキスト ファイルには 2 つの "name" 単語があり、richtextbox には 3 つの "and" 単語があります。したがって、richtextbox のテキスト ファイルに同じ単語が 2 つある場合、2 の後に 3 つ以上になることはありません。それは間違った単語である必要があるため、カウントされません。しかし、HashSet は一意の値をカウントしているだけで、テキスト ファイル内の重複を探していません。テキスト ファイル内のすべての単語を RichTextBox 内の単語と比較したいと考えています。
私のコードはここにあります:
c# - HashSet を ListView アイテムにバインドする (C#、WPF)
HashSet を ListView アイテムにバインドしようとしています。私は自分のコードをここに文書化しました:
それを達成するためのヒントを教えてくれる人はいますか?どうもありがとう!
乾杯
c# - C#でHashSetを持っているのにSetを持っていないのはなぜですか?
古い質問
私の理解では、C# には何らかの意味HashSet
とset
型があります。私は何を理解していHashSet
ます。しかし、なぜset
別の単語なのですか?すべてのセットが ではないのはなぜHashSet<Object>
ですか?
新しい質問
Set
型と同様に、C# にジェネリック型がないのはなぜDictionary
ですか? 私としては、検索・追加・削除の性能が標準的なセットが欲しいところです。それがハッシュで実現されているか、他の何かで実現されているかはあまり気にしません。では、実際にHashSet
はこのバージョンの C# では として実装されるが、将来のバージョンでは多少異なるセット クラスを作成してみませんか?
または、少なくともインターフェースではないのはなぜISet
ですか?
答え
以下に回答してくれたすべての人に感謝しICollection
ますISet
。ただし、私の観点からは、セットが列挙可能である必要はありませんが、ICollection
実装IEnumerable
します --- 例: 1 と 2 の間の実数のセット (さらに、セットは動的に生成できます)。「普通のプログラマー」が無数のセットを必要とすることはめったにないので、これはマイナーな暴言であることに同意します。
わかりました、私はそれを理解したと思います。HashSet
は絶対に呼び出されることを意図していましSet
たが、この単語Set
はある意味で予約されています。より具体的には、.NET アーキテクチャの作成者は、さまざまな言語に対して一貫性のある (原文のまま!) クラスのセットを持ちたいと考えていました。これは、標準クラスのすべての名前が .NET 言語のキーワードと一致してはならないことを意味します。ただし、という単語Set
は、実際には大文字と小文字を区別しない VB.NET で使用されているため (そうですか?)、残念ながらそこには操作の余地がありません。
謎が解けました:)
エピローグ
Alex Y. による新しい回答は、次の .NET 4.0 インターフェイスについて説明しているMSDN ページへのリンクISet
ですHashedSet
。ハッピーエンド。
c# - コレクションルックアップ; 辞書の代替
TimeSheetActivityクラスには、Allocationsのコレクションがあります。割り当ては、ドメイン内の他のオブジェクトによっても使用される値オブジェクトであり、次のようになります。
同じAllocation.EventDateに重複して割り当てることはできません。したがって、クライアントがアクティビティに割り当てを行おうとすると、同じAllocation.EventDateのコレクションにすでにAllocationがあるかどうかがチェックされます。そうでない場合は、新しい割り当てがコレクションに追加されますが、追加されている場合は、既存の割り当てが新しい割り当てに置き換えられます。
私は現在、Allocation.EventDateをキーとして、コレクションを維持するためにディクショナリを使用しています。ドメインでは問題なく動作しますが、キーがすでに値の一部になっているという事実自体が「悪臭」ではないかと思います。
また、辞書の値以外のものを永続化する理由はありません。私はNHibernateを使用しているので、それを行うためにカスタムタイプを作成する必要があるかもしれません。それが、別のタイプのコレクションを使用する必要があるという手がかりにもなるのではないかと思います。(これが、Allocationクラスの仮想プロパティの理由でもあります)。
私が考えている主な代替案は、専用のEqualityComparerを備えたHashSetです。
どう思いますか?
乾杯、ベリール
java - 反復中に HashSet から要素を削除する
したがって、反復中にJava HashSetから要素を削除しようとすると、 ConcurrentModificationExceptionが発生します。次の例のように、 HashSetから要素のサブセットを削除する最良の方法は何ですか?
これが解決策ですが、あまりエレガントではないと思います:
ありがとう!
java - コレクションremoveAllは大文字と小文字を区別しませんか?
さて、これが私の問題です。HashSet
'sする必要があります。このメソッドを使用して、removeAll
一方のセットに存在する値をもう一方のセットから削除します。
Set
メソッドを呼び出す前に、明らかに値をsに追加します。値は両方のリストで異なるケースであるため、追加する前.toUpperCase()
にそれぞれを呼び出します。String
事件に韻や理由はありません。
を呼び出したらremoveAll
、に残っている値の元のケースを元に戻す必要がありますSet
。元のリストを実行して使用せずにこれを行う効率的な方法はありCompareToIgnoreCase
ますか?
例:
リスト1:
リスト2:
この後、を使用しHashSet
てリストごとに個別に作成します。次に、を呼び出します。toUpperCase()
String
removeAll
リストを再び次のようにする必要があります。
どんなアイデアでも大歓迎です。私はそれが貧弱であることを知っています、元のリストの基準があるはずですが、それは私が決めることではありません。
c# - HashSetはいつ使用する必要がありますかタイプ?
タイプを調べてHashSet<T>
いますが、コレクションのどこにあるのかわかりません。
代わりにそれを使用できますList<T>
か?のパフォーマンスはHashSet<T>
もっと良くなると思いますが、その要素への個々のアクセスを見ることができませんでした。
列挙専用ですか?