Когда мне следует использовать тип HashSet <T>? - PullRequest
123 голосов
/ 08 августа 2009

Я изучаю тип HashSet<T>, но не понимаю, где он стоит в коллекциях.

Можно ли использовать его для замены List<T>? Я представляю производительность HashSet<T> лучше, но я не мог видеть индивидуальный доступ к его элементам.

Это только для перечисления?

Ответы [ 11 ]

0 голосов
/ 20 ноября 2018

В базовом предполагаемом сценарии HashSet<T> следует использовать, когда вы хотите более конкретные операции над множествами для двух коллекций, чем предоставляет LINQ. Методы LINQ, такие как Distinct, Union, Intersect и Except, в большинстве случаев достаточны, но иногда вам могут потребоваться более мелкие операции, а HashSet<T> обеспечивает:

  • UnionWith
  • IntersectWith
  • ExceptWith
  • SymmetricExceptWith
  • Overlaps
  • IsSubsetOf
  • IsProperSubsetOf
  • IsSupersetOf
  • IsProperSubsetOf
  • SetEquals

Другое различие между «перекрывающимися» методами LINQ и HashSet<T> заключается в том, что LINQ всегда возвращает новый IEnumerable<T>, а методы HashSet<T> изменяют исходную коллекцию.

...