Dot-Net
List<T>.Contains() 很慢?
誰能解釋一下為什麼泛型
List.Contains()函式這麼慢?我有
List<long>大約一百萬個數字,並且程式碼不斷檢查這些數字中是否有特定數字。我嘗試使用
Dictionary<long, byte>andDictionary.ContainsKey()函式做同樣的事情,它比使用 List 快 10-20 倍。當然,我真的不想為此目的使用 Dictionary,因為它不應該以這種方式使用。
所以,這裡真正的問題是,是否有任何替代方法
List<T>.Contains(),但不像Dictionary<K,V>.ContainsKey()?
如果您只是檢查是否存在,那麼
HashSet<T>在 .NET 3.5 中是您的最佳選擇 - 類似字典的性能,但沒有鍵/值對 - 只有值:HashSet<int> data = new HashSet<int>(); for (int i = 0; i < 1000000; i++) { data.Add(rand.Next(50000000)); } bool contains = data.Contains(1234567); // etc