如果我正在存储一堆字符串值并且我希望能够在 O(1) 时间后找到它们,我经常做的事情是:
foreach (String value in someStringCollection)
{
someDictionary.Add(value, String.Empty);
}
这样,以后我就可以轻松地对这些字符串值执行恒定时间查找,例如:
if (someDictionary.containsKey(someKey))
{
// etc
}
但是,我觉得我通过使值 String.Empty 作弊。我应该使用更合适的 .NET 集合吗?
最佳答案
如果您使用的是 .Net 3.5,请尝试 HashSet .如果您不使用 .Net 3.5,请尝试 C5 .否则,您当前的方法就可以了(@leppie 建议的 bool 更好,或者不像 @JonSkeet 建议的那样,dun dun dun!)。
HashSet<string> stringSet = new HashSet<string>(someStringCollection);
if (stringSet.Contains(someString))
{
...
}
关于c# - 在 C# .NET 中用于在 O(1) 时间内获取项目的“正确”集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330978/