[解決済み] 定義 HashSetとは何ですか?
質問
ハッシュセット C#のHashSetデータ構造は、.NET Framework 3.5で導入されました。実装されているメンバーの完全なリストは、以下のサイトにあります。 ハッシュセット MSDN のページをご覧ください。
- どこで使われているのですか?
- なぜそれを使いたいのですか?
どのように解決するのですか?
-
-
A
HashSet
はオブジェクトのセットを保持しますが、あるオブジェクトがすでにセットに入っているかどうかを簡単かつ迅速に判断できるような方法で保持します。これは、内部で配列を管理し、オブジェクトのハッシュコードから計算されるインデックスを使用してオブジェクトを格納することによって行われます。 ここで見てみましょう -
HashSet
は一意な要素を含む非順序型コレクションである。標準的なコレクション操作であるAdd, Remove, Containsを備えているが、ハッシュベースの実装を使用しているため、これらの操作はO(1)である。(例えばListがContainsとRemoveでO(n)であるのとは対照的である)。HashSet
のような標準的な集合演算も提供します。 ユニオン , 交差点 および 対称的な差 . ここで見てみましょう
-
-
Setsにはさまざまな実装があります。要素をハッシュ化することで、挿入や検索を高速に行うものもある。しかし、その場合、要素が追加された順番は失われることになる。他の実装では、実行時間が遅くなる代償として、追加された順序が維持されます。
は
HashSet
のクラスは、最初のアプローチに進みます。
ではなく
要素の順序を保持する。これは、通常の
List
. いくつかの基本的なベンチマークでは,一次型 (int, double, bool など) を扱う場合,HashSet はそこそこ高速であることが示されました.クラス・オブジェクトを扱う場合は、もっと速い。つまり、HashSetは速いということです。
の唯一の欠点は
HashSet
は、インデックスによるアクセスができないことです。要素にアクセスするには、列挙子を使うか、組み込み関数を使って
HashSet
に変換してください。
List
を作成し、それを繰り返し実行します。
ここで見てみましょう
関連
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] \0-9]よりも効率が悪い
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] HashSetの値を構造的に初期化する方法は?
-
[解決済み] ConcurrentHashMapに対するConcurrentHashSetが存在しない理由
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] C# Setコレクション?
-
[解決済み] HashSet<T>型はいつ使うべきですか?