【问题标题】:Getting i-th value from a SortedList or SortedDictionary从 SortedList 或 SortedDictionary 中获取第 i 个值
【发布时间】:2008-10-24 16:09:57
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net collections


    【解决方案1】:

    你可以使用类似的代码

    list.Values[index] 
    

    用于排序列表。

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

    dict.ElementAt(index).Value
    

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

    无论哪种情况,您都需要检查您的计数。如果是奇数,取 index = (list.length-1) / 2 )。如果是偶数,则将 index1 = list.length/2 AND index2 = list.length/2 - 1 取平均值。

    【讨论】:

      【解决方案2】:

      试试这样的:

      list.Values[list.Count / 2];

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

      【讨论】:

      • 干杯,这仅适用于 SortedList。有没有办法为 SortedDictionary 做到这一点?
      【解决方案3】:

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

      sortedDictionaryName.ElementAt(index);
      

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-10
          • 1970-01-01
          相关资源
          最近更新 更多