如何从C#的SortedDictionary中有效地提取元素?

时间:2015-11-19 22:06:05

标签: c#

使用复杂度为O(lgn)而不是O(2lgn)从C#的SortedDictionary获取与键相关联的值的标准C#实践是什么?我问这个是因为似乎每次你想要提取一个值时,你需要首先调用ContainsKey来检查密钥是否在那里,并为整体复杂性增加了另一个lgn。在C ++中,我可以调用.find()并检查它返回的指针.end()并取消引用该指针,如果它不等于.end()。在Java中,存储的所有键都是引用,因此如果找不到键,则get()方法返回null,也就是O(lgn)。所以。在C#中,我可以做任何其他使用可空类型的值来获得比O(lgn)复杂度更高的值吗?感谢。

2 个答案:

答案 0 :(得分:3)

  

使用复杂度为O(lgn)而不是O(2lgn)从C#的SortedDictionary获取与键相关联的值的标准C#实践是什么?

O(log(n))等于O(2 * log(n)),所以两次传递 O(log(n))。

也就是说,您可以使用TryGetValue来获取值(如果存在)使用单次传递。

答案 1 :(得分:1)

要进行单一查询,您可以使用TryGetValue

object value;
if(dic.TryGetValue(key, out value))
{

}