我是 C# 新手,已经习惯了 Java 及其数据结构。最近在写C#的时候,试图根据用户的选择来获取结果列表。我在 C# 中使用了 HashTable,但人们说我可以在 List 中调用 where() 方法。
我想知道 where 方法(数组?或其他一些数据结构?)的底层,以便我可以弄清楚 where() 函数和 HashTable 的实际成本。
另外,我知道大多数 HashTable 是基于数组或 BST 创建的,那么 HashTable 在 C# 中是如何工作的呢?
我是 C# 新手,已经习惯了 Java 及其数据结构。最近在写C#的时候,试图根据用户的选择来获取结果列表。我在 C# 中使用了 HashTable,但人们说我可以在 List 中调用 where() 方法。
我想知道 where 方法(数组?或其他一些数据结构?)的底层,以便我可以弄清楚 where() 函数和 HashTable 的实际成本。
另外,我知道大多数 HashTable 是基于数组或 BST 创建的,那么 HashTable 在 C# 中是如何工作的呢?
一般来说,我不会Hashtable
在 C# 中使用,而是使用Dictionary<TKey, TValue>
,因为这提供了类型安全。
这两个类都具有接近 O(1) 的访问权限来访问集合中的项目。文档中提到了这一点:
获取或设置此属性的值接近 O(1) 操作。
请注意,使用 aList<T>
将在内部有效地使用数组,这意味着.Where
成为 O(n)过滤器。对于查找单个元素,FirstOrDefault
通常是更好的选择。如果集合中的项目不多,这通常很好,但如果您需要快速访问,那么 aDictionary<T,U>
是更好的选择。