在SortedDictionary中查找最接近的值
我有一个SortedDictionary
SortedDictionary myDict;
现在我想找到X之上的第一个值。我可以做这样的事情
foreach (var iKey in MyDict.Keys) { if (iKey >= thresholdKey) { foundKey = iKey; break; } }
但这并不是明智的表现。
还有更好的建议吗?
(在集合中是否有一种方法可以像二进制搜索SortedDictionary那样?)
虽然理论上,找到大于给定值的最小项是可以在二进制搜索树上有效执行的操作(这是SortedDictionary
的实现方式),但SortedDictionary
不会公开您执行此类操作的方法。搜索该数据类型。
您需要使用二进制搜索树的不同实现,以便有效地执行此类搜索,同时仍使用相同类型的数据结构。 没有合适的.NET类型; 你需要使用第三方实现(其中有很多)。
你可以尝试,如果这更快。 但我想只有你多次执行搜索才会更快。
var keys = new List(myDict.Keys); int index = keys.BinarySearch(thresholdKey);
使用Sorteddictionary上的.toList()创建一个临时列表n现在,因为这会产生一个List n
n.Find(item =>item >20)
检索匹配的第一个键,
我不知道这是否有比foreach更好的性能,但这应该工作:
上述就是C#学习教程:在SortedDictionary中查找最接近的值分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var foo = myDict.FirstOrDefault(i => i.Key > thresholdKey);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/959716.html