• c# Dictionary的遍历和排序


    原文链接:http://www.cnblogs.com/eye-like/p/4155943.html
    c#遍历的两种方式 for和foreach

      for: 需要指定首位数据、末尾数据、数据长度; for遍历语句中可以改变数据的值; 遍历规则可以自定义,灵活性较高

      foreach: 需要实现ienumerator接口; 在遍历中不可以改变数据的值; 遍历规则只能是'++' ; 但查询效率较高

    Dictionary遍历方式:

     
    Dictionary<string, int> list = new Dictionary<string, int>();
    list.Add("d", 1);
    //3.0以上版本
    foreach (var item in list)
    {
        Console.WriteLine(item.Key + item.Value);
    }
    
    //KeyValuePair<T,K>
    foreach (KeyValuePair<string, int> kv in list)
    {
        Console.WriteLine(kv.Key + kv.Value);
    }
    
    //通过键的集合取
    foreach (string key in list.Keys)
    {
        Console.WriteLine(key + list[key]);
    }
    
    //直接取值
    foreach (int val in list.Values)
    {
        Console.WriteLine(val);
    }
    
    //非要采用for的方法也可
    List<string> test = new List<string>(list.Keys);
    for (int i = 0; i < list.Count; i++)
    {
        Console.WriteLine(test[i] + list[test[i]]);
    }
     

    List排序:

                Hashtable ht=new Hashtable(); 
        
                ht.Add("E","e");
                ht.Add("A","a");
                ht.Add("C","c");
                ht.Add("B","b");
    
                 ArrayList lst=new ArrayList(ht.Keys); 
                 lst.Sort();
                 foreach(string key in lst)
                 {
                     listBox1.Items.Add("key:" + key + "  vlaue:"+ht[key]);
                 }            

    Dictionary排序

      排序思路:

      1>用一个List保存Dictionary的数据

      2>对新的List进行排序

      3>从List获取排序好的值,重新添加进Dictionary

     protected Dictionary<string, int> SortDictionary_Desc(Dictionary<string, int> dic)
            {
                List<KeyValuePair<string, int>> myList = new List<KeyValuePair<string, int>>(dic);
                myList.Sort(delegate(KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
                {
                    return s2.Value.CompareTo(s1.Value);
                });
                dic.Clear();
                foreach (KeyValuePair<string, int> pair in myList)
                {
                    dic.Add(pair.Key, pair.Value);
                }
                return dic;
            }
    
            protected Dictionary<string, int> SortDictionary_Asc(Dictionary<string, int> dic)
            {
                List<KeyValuePair<string, int>> myList = new List<KeyValuePair<string, int>>(dic);
                myList.Sort(delegate(KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
                {
                    return s1.Value.CompareTo(s2.Value);
                });
                dic.Clear();
                foreach (KeyValuePair<string, int> pair in myList)
                {
                    dic.Add(pair.Key, pair.Value);
                }
                return dic;
            }
  • 相关阅读:
    Python 如何计算当前时间减少或增加一个月
    删除 win8.1中的网络1,网络2,宽带连接1,宽带连接2等网络记录
    Office2003/2010等集成SP的简单方法
    win8.1点击“更改电脑设置”无反应(闪退)
    右键菜单添加带图标的Notepad++
    word2010无法打开文件时的一点对策
    在win7/8/10鼠标右键添加“管理员取得所有权”
    VisualSVNServer 无法启动 could not log pid to file
    半年来经销商云平台工作总结-后端
    半年来经销商云平台工作总结-前端
  • 原文地址:https://www.cnblogs.com/mrzhoushare/p/5786790.html
Copyright © 2020-2023  润新知