【发布时间】:2012-03-10 22:34:30
【问题描述】:
抱歉,如果其他地方已经问过这个问题,但我找不到。
我想在 .NET 中存储一组字符串,以便可以轻松快速地查找密钥是否已存储。
我可以只使用 List
所以我的下一个想法是使用 Dictionary
有没有更好的方法来做到这一点?
【问题讨论】:
-
List
有一个 Contains 方法,因此您无需枚举它即可找到匹配项 -
@KAJ 猜猜
Contains在内部做什么。 ;-) -
@KAJ - 看起来最好的答案是使用 HashSet,但只是想知道 - List.Contains 方法会在 O(1) 中执行,还是只是在幕后进行线性搜索像我的版本一样? (我想是后者,因为 List
适用于任何类型,而不仅仅是那些可以排序和散列的类型) -
@KonradRudolph:它会在您等待披萨完成时为您订购披萨吗?那么它应该!我的理念是,当您可以让等待更“合意”时,为什么还要让程序更快、更高效!
-
Contains 是一个 O(n),其中 n 是计数操作。 msdn.microsoft.com/en-us/library/bhkz42b3.aspx。 @Konrad Rudolph 是的,我知道,但我更要指出的是,在这种情况下手动实现枚举是没有意义的 ;-)
标签: c# dictionary key