Dot-Net

HashSet<T> 和 List<T> 有什麼區別?

  • June 17, 2011

HashSet&lt;T&gt;您能解釋一下 .NET和List&lt;T&gt;.NET之間的區別嗎?

也許你可以用一個例子來解釋在哪些情況下HashSet&lt;T&gt;應該優先考慮List&lt;T&gt;

不像 List<> …

  1. HashSet 是一個沒有重複成員的列表。
  2. 因為 HashSet 被限制為僅包含唯一條目,所以內部結構針對搜尋進行了優化(與列表相比) - 它要快得多
  3. 添加到 HashSet 會返回一個布爾值 - 如果由於 Set 中已經存在而添加失敗,則返回 false
  4. 可以對集合執行數學集合操作:Union/Intersection/IsSubsetOf 等。
  5. HashSet 不實現 IList 僅 ICollection
  6. 您不能將索引與 HashSet 一起使用,只能使用枚舉數。

使用 HashSet 的主要原因是如果您對執行 Set 操作感興趣。

給定 2 個集合:hashSet1 和 hashSet2

//returns a list of distinct items in both sets
HashSet set3 = set1.Union( set2 );

與使用 LINQ 的等效操作相比。寫起來也更整潔!

引用自:https://stackoverflow.com/questions/6391738