<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      簡單的鍵值按值排序問題

        需求是這樣的:http://q.cnblogs.com/q/29266/

        這里簡述一下:

      一個小小排序問題。。不是很高深的
      用c#代碼實現,不要用linq技術
      問題:
      廣東 30
      湖南 20
      廣西 60
      北京 70
      上海 30

      排序之后:

      北京 70
      廣西 60
      廣東 30
      上海 30
      湖南 20

        這是一個簡單的鍵值按值排序問題,難點在于不用linq(有的項目環境是.NET 2.0),如果用linq很容易解決(在該問題的回復中有,這里就不說了),下面提供兩種方法。

        方法一,建一個只有key和value兩個屬性的實體,然后用冒泡排序,代碼如下:

          class Program
      {
      static void Main(string[] args)
      {
      List<TestModel> tmlist = new List<TestModel>()
      {
      new TestModel(){city="廣東",count=30},
      new TestModel(){city="湖南",count=20},
      new TestModel(){city="廣西",count=60},
      new TestModel(){city="北京",count=70},
      new TestModel(){city="上海",count=30}
      };

      TestModel temp = new TestModel();
      for (int m = 0; m < tmlist.Count; m++)
      {
      for (int n = 0; n < tmlist.Count - m - 1; n++)
      {
      if (tmlist[n].count < tmlist[n + 1].count)
      {
      temp = tmlist[n];
      tmlist[n] = tmlist[n + 1];
      tmlist[n + 1] = temp;
      }
      }
      }

      foreach (var item in tmlist)
      {
      Console.WriteLine(item.city + "" + item.count);
      }

      Console.Read();
      }
      }

      public class TestModel
      {
      public string city { get; set; }
      public int count { get; set; }
      }

        這種方法容易理解,但要新建一個實體比較麻煩。

        如果在程序中只要做個簡單的排序這樣就顯得太復雜了,有沒有簡單的方法呢?我這里提供另外一種思路,代碼如下:

      class Program
      {
      static void Main(string[] args)
      {
      //原有數據
      Dictionary<string, int> val = new Dictionary<string, int>();
      val.Add("廣東",30);
      val.Add("湖南",20);
      val.Add("廣西",60);
      val.Add("北京",70);
      val.Add("上海",30);

      SortedDictionary<int, string> newval = new SortedDictionary<int, string>(new ReverseComparer<int>());
      int index = 1;
      foreach (var item in val)
      {
      //這一行是關鍵
      newval.Add(item.Value * 1000+index, item.Key);
      index++;
      }

      val = new Dictionary<string, int>();
      foreach (var item in newval)
      {
      val.Add(item.Value, item.Key / 1000);
      Console.WriteLine(item.Value + "" + item.Key/1000);
      }
      //val就是排序后的字典集合
      Console.Read();
      }
      }

      sealed class ReverseComparer<T> : IComparer<T> where T : IComparable<T>
      {
      public int Compare(T x, T y)
      {
      return y.CompareTo(x);
      }
      }

        程序中也說了,newval.Add(item.Value * 1000+index, item.Key);這一行是關鍵,各位讀者自己思考一下為什么可以這樣處理,這樣處理有什么局限性。

        非常歡迎大家提出自己的看法,留言討論。

      posted @ 2011-10-28 10:22  artwl  閱讀(1194)  評論(0)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 少妇被粗大的猛烈进出视频| 亚洲国产日韩A在线亚洲| 策勒县| 日本熟妇乱一区二区三区| 久久精品国产亚洲综合av| 精品国产性色av网站| 日韩av日韩av在线| 激情国产一区二区三区四| 99中文字幕精品国产| 黑人好猛厉害爽受不了好大撑| 亚洲熟女乱色综合亚洲图片| 国产成人精品区一区二区| 日韩一区二区三区女优丝袜| 亚洲男人AV天堂午夜在| 亚洲色在线v中文字幕| 久久久一本精品99久久精品36| 成人免费A级毛片无码片2022| 亚洲夜色噜噜av在线观看| 国产精成人品日日拍夜夜| 性欧美老妇另类xxxx| 日本一区二区三区东京热| 国产精品免费看久久久| 熟女性饥渴一区二区三区| 免费观看的av在线播放| 九九热在线精品视频免费| 亚洲18禁一区二区三区| 精品福利一区二区三区免费视频| 少妇xxxxx性开放| 应城市| 久久99久久99精品免视看国产成人 | 福利一区二区不卡国产| 丰满无码人妻热妇无码区| 国产一区二区日韩在线| 免费无码高H视频在线观看| 久久亚洲国产成人亚| 国产免费午夜福利在线播放| 国产亚洲精品AA片在线播放天 | 日本japanese丰满白浆| 激情综合色综合久久丁香| 国产AV福利第一精品| 国产目拍亚洲精品二区|