我想知道如何在C#排序列表中获取下一个元素。到目前为止,我已经提出了以下代码:
SortedList<int, Bla> mList;
Bla someElement = mList[key];
Bla next = mList[mList.Keys[mList.IndexOfKey(key) + 1]];
我不确定这是否是最聪明的方法;-)
最佳答案
由于您可以通过index (see the Remarks section)访问SortedList
,因此建议您使用以下代码:
var index = mList.IndexOfKey(key);
var first = mList.Values[index];
var second = mList.Values[index + 1];
这将与单个查找在相同的
O(log n)
中工作。这也是LINQ的实现方式:
var items = mList.SkipWhile(m => m.Key != key).Select(m => m.Value).Take(2).ToList(); // Avoid double-enumeration by calling ToList
var first = mList[0];
var second = mList[1];
这只会枚举一次。它将以
O(n)
执行。关于c# - C#排序列表:如何获取下一个元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8090786/