C#中何时使用字典?

问题描述 投票:0回答:3

我今天参加面试,面试官问什么是字典以及我们什么时候应该使用它?第一部分非常简单,但第二部分我无法回答,我知道这是一个键值对,但我总是使用对象列表来实现我的目标。

我搜索了很多文章,阅读了一些文章thisandthis,但我发现每个人都在回答如何部分而不是何时部分,所以你能帮我解决一些我应该使用字典的场景吗?

谢谢。

c# dictionary generics time-complexity big-o
3个回答
3
投票

这通常是因为搜索复杂性。在列表中搜索是 O(n),但在字典中搜索是 O(1)。

但这一切都取决于其他问题 - 列表是按键排序的吗?如果是这样,那么搜索就是O(nlogn),字典是如何实现的?在最坏的情况下,即使使用字典也可以达到 O(n) 的效果。

所以一般来说,当你需要通过某个键在某个集合中搜索时,你可以使用字典。


3
投票

当您需要存储具有某些与其关联的唯一键的值时,可以使用

Dictionary<TKey,TValue>
,并且通过该键访问它们对您来说很方便。

很多人会通过谈论复杂性、访问和插入的速度以及类似的事情来回答。他们没有错,字典速度非常快,优化良好,并且在大多数情况下都能提供您所需的性能。但在大多数情况下,这并不重要,键值对链表的性能也足够了。您主要会使用词典,因为它们很方便。


1
投票

当列表的索引必须有意义且唯一时,您可以使用字典来实现更好的查找操作。

© www.soinside.com 2019 - 2024. All rights reserved.