定義: HashSet とは何ですか? 質問する

定義: HashSet とは何ですか? 質問する

HashSet C# HashSetデータ構造は.NET Framework 3.5で導入されました。実装されたメンバーの完全なリストは、ハッシュセット MSDNページ。

  1. どこで使われていますか?
  2. なぜそれを使いたいのですか?

ベストアンサー1

    1. A はHashSetオブジェクトのセットを保持しますが、オブジェクトがセット内に既に存在するかどうかを簡単かつ迅速に判断できるような方法で保持します。これは、配列を内部的に管理し、オブジェクトのハッシュコードから計算されたインデックスを使用してオブジェクトを格納することによって行われます。こちらをご覧ください
  1. HashSetは、一意の要素を含む順序付けされていないコレクションです。標準的なコレクション操作である Add、Remove、Contains を備えていますが、ハッシュベースの実装を使用しているため、これらの操作は O(1) です。(Contains と Remove に対して O(n) である List などとは対照的です。)また、和集合積集合対称差HashSetなどの標準的な集合操作も提供します。こちらをご覧ください

  2. Set にはさまざまな実装があります。要素をハッシュすることで挿入と検索の操作を超高速化するものもあります。ただし、これは要素が追加された順序が失われることを意味します。その他の実装では、実行時間が遅くなるという代償を払って追加された順序が保持されます。

C# のクラスHashSetは最初のアプローチを採用しているため、要素の順序は保持されませList。これは通常の よりもはるかに高速です。いくつかの基本的なベンチマークでは、HashSet はプライマリ タイプ (int、double、bool など) を処理するときにかなり高速であることが示されました。クラス オブジェクトを操作する場合は、はるかに高速です。つまり、HashSet は高速であるということです。

の唯一の欠点HashSetは、インデックスによるアクセスがないことです。要素にアクセスするには、列挙子を使用するか、組み込み関数を使用して をHashSetに変換しList、それを反復処理します。こちらをご覧ください

おすすめ記事