我有一个对象的排序集合(可以是SortedList或SortedDictionary,我主要用于读取,因此添加性能不是那么重要)。如何获取第i个值?
例如,当我的集合中有数字1、2、3、4、5,并且我想要中位数(在这个例子中为3),该怎么做?
我有一个对象的排序集合(可以是SortedList或SortedDictionary,我主要用于读取,因此添加性能不是那么重要)。如何获取第i个值?
例如,当我的集合中有数字1、2、3、4、5,并且我想要中位数(在这个例子中为3),该怎么做?
list.Values[index]
对于已排序的列表。
使用SortedDictionary的最简单方法是使用ElementAt()方法:
dict.ElementAt(index).Value
然而,在列表情况下这比较慢。
无论哪种情况,你需要检查你的计数。如果是奇数,取 index = (list.length-1) / 2 ). 如果是偶数,取 index1 = list.length/2 AND index2 = list.length/2 - 1 并取平均值。
试试这样做:
list.Values[list.Count / 2];
请注意,如果Count为偶数,则真正的中位数将平均中间的两个数字。
sortedDictionaryName.ElementAt(index);
如果您想提取所需索引处元素的键或值:
sortedDictionaryName.ElementAt(index).Key //For only Key
sortedDictionaryName.ElementAt(index).Value //For only Value
如果您需要多次按索引在SortedDictionary中获取元素,性能会非常差。请使用SortedDictionary作为输入创建一个新的SortedList,并访问SortedList,这样可以运行得快得多。