首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

以 HashSet<T> 取代 List<T>:大量資料查找的效能優化

     編輯:關於.NET

.NET 3.5 引入 HashSet<T>,底層採用雜湊表結構,可視為「無 Value 的 Dictionary」。特性:不支援索引存取、不允許重複元素、元素必須正確實作 GetHashCode 與 Equals。

效能對比:Contains 查找

集合類型Contains 時間複雜度適用場景
List<T>O(n) 線性掃描資料量小、需保留順序、允許重複
HashSet<T>O(1) 雜湊查找資料量大、頻繁查找、需集合運算 (聯集/交集)

決策指引

  • 資料量 ≤ 8:仍建議用 List<T>。參考 HybridDictionary 切換閾值 (內部 8 筆以下用 ListDictionary,以上用 Hashtable),小資料量雜湊額外負擔反而較慢。
  • 資料量大且頻繁 Contains:首選 HashSet<T>。典型案例:關鍵字過濾、權限代碼驗證、ID 去重。
  • 需集合運算:HashSet<T> 內建 UnionWith、IntersectWith、ExceptWith、SymmetricExceptWith,效能遠優於 LINQ 對 List 操作。

程式碼範例

var keywords = new HashSet<string>({ "admin", "root", "system" }, StringComparer.OrdinalIgnoreCase);
// O(1) 查找
if (keywords.Contains(input)) RejectRequest();

總結

正確選擇集合類型是效能調優的基礎。HashSet<T> 專為「查找」與「集合運算」設計,大數據場景下能帶來數量級的效能提升;小資料量則以 List<T> 更輕量、更直觀。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved