1. ホーム
  2. c#

[解決済み] HashSet<T>型はいつ使うべきですか?

2022-05-13 08:07:10

質問

私は HashSet<T> 型を調査していますが、それがコレクションの中でどのような位置にあるのか理解していません。

を置き換えるためにそれを使うことができますか? List<T> ? 私は HashSet<T> の方がパフォーマンスが良いと想像しますが、その要素への個別のアクセスを見ることはできませんでした。

列挙のみでしょうか?

どのように解決するのですか?

について重要なことは HashSet<T> の重要な点は、その名前にあります。 セット . 1つのセットでできることは、そのメンバーが何であるかを確定することと、あるアイテムがメンバーであるかどうかをチェックすることだけです。

単一の要素を取得できるかどうかを尋ねること(例えば set[45] ) は、集合の概念を誤解しています。 集合の45番目の要素などというものは存在しません。 集合の中の項目には順序がありません。 セット {1, 2, 3} と {2, 3, 1} はメンバーシップが同じなので、あらゆる点で同じです。

を反復するのはやや危険です。 HashSet<T> なぜなら、そうすることでセットのアイテムに順序を課すことになるからです。 その順序は実際にはセットの特性ではありません。 それに依存してはいけません。 コレクション内のアイテムの順序が重要である場合、そのコレクションはセットではありません。

集合は本当に限られた、ユニークなメンバーで構成されています。 その反面、本当に速いんです。