zoukankan      html  css  js  c++  java
  • C# 谈Dictionary<TKey,TValue>,SortedDictionary<TKey,TValue>排序

    使用过Dictionary的人都知道,当每一个Add里面的值都不会改变其顺序,所以需要需要对其排序的时候就用到SortedDictionary, 但SortedDictionary并不是那么理想,其默认的方式只支持正序排序,想要反序排序时必须得靠自己重新编写代码,下面来看一个简单的例子:

    private void TestDictionarySort()
            {
                SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
                sd.Add("321", "fdsgsags");
                sd.Add("acb", "test test");
                sd.Add("1123", "lslgsgl");
                sd.Add("2bcd13", "value");
     
                foreach (KeyValuePair<string, string> item in sd)
                {
                    Response.Write("键名:" + item.Key + " 键值:" + item.Value);
                }
    
            }

    上面代码输出效果:

    键名:1123 键值:lslgsgl
    键名:2bcd13 键值:value
    键名:321 键值:fdsgsags
    键名:acb 键值:test test

    好了,现在我们来看一下反序排序的效果,请看下面的代码:

    private void TestDictionarySort()
            {
                SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
                sd.Add("321", "fdsgsags");
                sd.Add("acb", "test test");
                sd.Add("1123", "lslgsgl");
                sd.Add("2bcd13", "value");
     
                Response.Write("<br />正序排序数据:<br />");
                foreach (KeyValuePair<string, string> item in sd)
                {
                    Response.Write("键名:" + item.Key + " 键值:" + item.Value + "<br />");
                }
    
                //重新封装到Dictionary里(PS:因为排序后我们将不在使用排序了,所以就使用Dictionary)
                Dictionary<string, string> dc = new Dictionary<string, string>();
                foreach (KeyValuePair<string, string> item in sd.Reverse())
                {
                    dc.Add(item.Key, item.Value);
                }
                sd = null;
                //再看其输出结果:
                Response.Write("<br />反序排序数据:<br />");
                foreach (KeyValuePair<string, string> item in dc)
                {
                    Response.Write("键名:" + item.Key + " 键值:" + item.Value + "<br />");
                }
    
    
            }

    上面代码输出效果:

    正序排序数据:
    键名:1123 键值:lslgsgl
    键名:2bcd13 键值:value
    键名:321 键值:fdsgsags
    键名:acb 键值:test test

    反序排序数据:
    键名:acb 键值:test test
    键名:321 键值:fdsgsags
    键名:2bcd13 键值:value
    键名:1123 键值:lslgsgl

  • 相关阅读:
    C# WinForm开发系列 Socket/WCF/Rometing/Web Services
    .net(c#) 简单的软件注册功能的实现:
    来自xici网友的Ubuntu和windows xp的Super PI性能测试
    最新的Linpack测试指南-基于woodcrest机器
    CFX x86_64 version issues 无法找到可执行文件
    如何检查一个mvapich的版本?
    Intel Tools Training Notes Intel Compiler, MKLs
    Infiniband IPoIB Debug FAQ
    让CFX的license server在开机的时候就自动启动
    FFTW 3.1.2 和 2.1.5编译
  • 原文地址:https://www.cnblogs.com/WZH75171992/p/4553726.html
Copyright © 2011-2022 走看看