从SortedList或SortedDictionary获取第i个值

时间:2008-10-24 16:09:57

标签: c# .net collections

我有一个已排序的对象集合(它可以是SortedList或SortedDictionary,我将主要用于阅读,因此添加性能并不重要)。我怎样才能获得第i个值?

所以,例如当我在集合中有数字1,2,3,4,5并且我想要中位数(在本例中为3)时,我该怎么办?

4 个答案:

答案 0 :(得分:22)

您可以使用

之类的代码
list.Values[index] 

表示已排序的列表。

使用SortedDictonary的最简单方法是使用ElementAt()方法:

dict.ElementAt(index)

但是,这比列表情况要慢。

在任何一种情况下,您都需要检查您的计数。如果是奇数,则取index =(list.length-1)/ 2)。如果是偶数,则取index1 = list.length / 2 AND index2 = list.length / 2 - 1并对值进行平均。

答案 1 :(得分:8)

尝试这样的事情:

list.Values [list.Count / 2];

请注意,如果Count为偶数,则真正的中位数会平均中间的两个数字。

答案 2 :(得分:3)

您可以使用以下语法在特定位置提取值:

sortedDictionaryName.ElementAt(index);

如果要在所需索引处提取元素的值或值:

sortedDictionaryName.ElementAt(index).Key //For only Key
sortedDictionaryName.ElementAt(index).Value //For only Value

答案 3 :(得分:1)

如果需要多次在SortedDictionary中按索引获取元素,那么性能就很糟糕。使用SortedDictionary作为输入创建一个新的SortedList并访问SortedList。运行速度快很多倍。