目前我用它来搜索新字符串并与字典集合进行比较
foreach (DictionaryEntry value in hd)
{
if (value == newWordIn)
{
// assign existing word
}
else
{
// assign new word into collection
}
}
hd包含很多键并且make循环很长。 我可以做些什么来快速检查并且不要等待这么长时间检查字典集合?
感谢您的建议。
答案 0 :(得分:3)
从根本上说,不是 - 如果您正在尝试按值找到字典条目,那么它将始终是O(N)操作。相反,如果您想要这种行为,则应构建HashSet<T>
个值。
(请注意,这些天你真的不应该首先使用非通用集合,除非真的必须这样做。)
答案 1 :(得分:0)
您可以引入其他字典,其中键是原始字典中的值,值是原始字典中这些值的计数。如果原始字典中的值是唯一的(因此计数总是1),那么您可以使用HashSet
代替Dictionary
。
您需要确保两个结构始终保持同步。
答案 2 :(得分:0)
您是否还可以添加代码以显示您使用hd
和newWordIn
的类型以使示例更清晰?
假设在您的示例中newWordIn
是string
类型,那么当您将其与DictionaryEntry
类型进行比较时,该代码将无法编译。
正如Jon Skeet已经指出你可能需要的是HashSet<string>
看起来(从您的代码注释中)您要做的是确保您的集合不包含重复条目。然后你的代码应该是:
HashSet<string> hd = new HashSet<string>();
...
// Only add distinct entries
if (!hd.Contains(newWordIn))
{
hd.Add(newWordIn);
}