【问题标题】:Dictionary<string, MyObject> or List<MyObject> with C# 3.5?使用 C# 3.5 的 Dictionary<string, MyObject> 或 List<MyObject>?
【发布时间】:2010-09-19 16:24:39
【问题描述】:

我经常在 C#2.0 中使用 Dictionary,第一个键是包含唯一标识符的字符串。

我正在学习 C#3.0+,现在我似乎可以简单地使用 List 并简单地对该对象执行 LINQ 以获取特定对象(使用 .where())。

那么,如果我理解得很好,Dictionary 类已经失去了它的用途?

【问题讨论】:

    标签: c# .net collections c#-3.0


    【解决方案1】:

    不,字典在给定键的情况下仍然更有效。

    一个列表,你仍然需要遍历列表来找到你想要的。字典进行查找。

    【讨论】:

      【解决方案2】:

      如果您只有一个列表,那么执行 LINQ 选择将扫描列表中的每个项目,并将其与您要查找的项目进行比较。

      但是,字典会计算您要查找的字符串的哈希码(由 GetHashCode 方法返回)。然后使用该值更有效地查找字符串。有关其工作原理的更多信息,请参阅Wikipedia

      如果您有多个字符串,初始 (List) 方法将开始变得非常缓慢。

      【讨论】:

        【解决方案3】:

        恕我直言,Dictionary 方法将比 LINQ 快得多,因此如果您有一个包含很多项目的数组,您应该使用 Dictionary。

        【讨论】:

          【解决方案4】:

          字典被实现为一个哈希表。因此,它应该为查找提供恒定的时间访问。 List 实现为动态数组,为您提供线性时间访问。

          基于底层数据结构,Dictionary 仍应为您提供更好的性能。

          字典上的 MSDN 文档

          http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

          和列表

          http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

          【讨论】:

            猜你喜欢
            • 2014-04-05
            • 1970-01-01
            • 2012-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-17
            • 2010-11-21
            • 2013-04-23
            相关资源
            最近更新 更多