【问题标题】:The underlay of C# where() method and C# HashTableC# where() 方法和 C# HashTable 的底层
【发布时间】:2013-09-03 13:59:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# data-structures hashtable where


    【解决方案1】:

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

    这两个类都具有接近 O(1) 的访问权限来访问集合中的项目。 documentation中提到了这一点:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      相关资源
      最近更新 更多