我想知道如何在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/

10-11 02:12