C#where()方法和C#哈希表的底层

本文关键字:哈希表 方法 C#where | 更新日期: 2023-09-27 18:29:51

我是C#的新手,已经习惯了Java及其数据结构。最近,当我写C#时,试图根据用户的选择获得结果列表。我在C#中使用了HashTable,但人们说我可以调用List中的where()方法。

我想知道where方法(数组?或其他数据结构?)的底层,这样我就可以计算出where()函数和HashTable的实际成本。

另外,我知道大部分HashTable都是基于数组或BST创建的,那么HashTable在C#中是如何工作的呢?

C#where()方法和C#哈希表的底层

通常,我不会在C#中使用Hashtable,而是使用Dictionary<TKey, TValue>,因为这提供了类型安全性。

对于访问集合中的项,这两个类都具有接近O(1)的访问权限。文件中提到了这一点:

获取或设置此属性的值接近O(1)运算。

请注意,使用List<T>将有效地在内部使用数组,这意味着.Where将成为O(n)过滤器。对于寻找单个元素,FirstOrDefault通常是更好的选择。如果集合中的项目不多,这通常是可以的,但如果您需要快速访问,那么Dictionary<T,U>是更好的选择。