文章类型: .NET
关键词: Dictionary,SortedList,键排序,值排序,List,Array,数组,Sort
内容摘要: 介绍在字典Dictionary或Hashtable值按键和按值的如何进行排序

键值对按键与按值排序方法

2015/7/14 15:43:44    来源:apple    阅读:

键值对按键和按值排序方法

以下说明键值对类型数据按键和按值排序的方法

(1)按键排序
   对于键值对如IDictionary<string, double>等键值对类型按键排序方法很简单,是要放到类型SortedList<string, double>中即可完成排序。注意按键排序因为是键值对类型,故键必须唯一,不能有重复。

(2)按值排序
对于键值对如IDictionary<string, double>等键值对类型按值排序方法就比较麻烦,因为.Net中没有提供相关类型的排序,而使用SortedList也不能完成,即使是交换键值,因为值有可能重复。
   一种方法就是:
    将键和值分别放到两个数组中,然后使用Array.Sort(数组a,数组b)排序,注意数组a,数组b的维数和个数必须相同,且要排序的数组放到第一个,数组b的顺序会按照数组a的排序Index进行调整顺序。该种排序时升序排列。要完成降序排列,只需要使用Array.Reverse()反转数组,两个数组需要同时反转。然后,再按顺序将排序好的数组放到键值对类型中。
   例如:

if (bSorted) 
{ 
    string[] arrayName = new string[dicItems.Count]; 
    double[] arrayValue = new double[dicItems.Count]; 
    dicItems.Keys.CopyTo(arrayName, 0); 
    dicItems.Values.CopyTo(arrayValue, 0); 
    Array.Sort(arrayValue, arrayName); 
    Array.Reverse(arrayValue); 
    Array.Reverse(arrayName); 
  
    IDictionary<string, IStaticValues> dicSorted = new Dictionary<string, IStaticValues>(); 
    for (int i = 0; i < arrayName.Length; i++) 
    { 
        dicSorted.Add(arrayName[i], dic[arrayName[i]]); 
    } 
    return dicSorted; 
}

 

 

↑ 上一篇文章:ASP.NET的基于SQL语句的分页与PagedDataSource的分页剖析 关键词:gridview,SQL语句,分页,Asp.net,Da.. 发布日期:2015/7/14 15:40:51
↓ 下一篇文章:C#中对于DataTable的Select筛选用法 关键词:C#,DataTable,Select,DataView.. 发布日期:2015/7/14 15:46:08
相关文章:
查找文章的相关文章的思路分析及实现 关键词:.net,C#,SQL,server,Data,Table,Dictionary按值排序,Arr.. 发布日期:2015-07-14 15:47
C#中List与Dictionary泛型集合复习总结训练 关键词:C#,ArrayList,Hashtable,List,Dictionary,List,Dict.. 发布日期:2015-07-29 10:45
VC中使用列表CListCtrl、链表List、字典CMap、数组等实现一组数列的可选排序 关键词:VC,列表,CListCtrl,链表,List,字典,CMap,数组,数列,可选,排序 发布日期:2017-11-07 13:49
相关目录:.NETJAVAJAVASCRIPT软件开发
我要评论
正在加载评论信息......