list字符串排序

来源:互联网 发布:pp越狱助手 for mac 编辑:程序博客网 时间:2024/05/18 10:31
登录
Microsoft.com
中华人民共和国 (中文) 
 
 
 
 
提出问题

对泛型list<string>中的内容进行排序。 

    问题

  • Question
    登录进行投票
    0
    登录进行投票

    新生成了一个泛型List如下

    List<string> mylist=new List<string>();

    mylist.add("字符串1");

    mylist.add(“字符串2”);

    mylist.add(“字符串3”);

    mylist.add(“字符串4”);

    mylist.add(“字符串......”);

     

    现在我想对字符串进行排序,排序方式 是根据字符串的长度进行排度。

     

    字符串长度最长的排在最前面,最短的排在最下面。

     

    拜求一解,谢谢。

    2011年8月18日 14:18

答案

  • Question
    登录进行投票
    0
    登录进行投票

    先宣告一个类(MySort)去实作IComparer<string>

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;namespace ConsoleApplication2{  class MySort:IComparer<string>  {       public int Compare(string x, string y)    {      if (x.Length >= y.Length)      {        return -1;      }      else      {        return 1;      }    }  }}

    主程序

    using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2{  class Program  {    static void Main(string[] args)    {      List<string> mylist = new List<string>();      mylist.Add("字符串22");      mylist.Add("字符串1");      mylist.Add("字符串4444");      mylist.Add("字符串333");      mylist.Sort(new MySort());      foreach (var item in mylist)      {        Console.WriteLine(item);      }      Console.ReadKey();    }  }}


    結果:

     


    Shadowと愉快なコード達
    • 已标记为答案 小五kyle 2011年8月18日 19:01
    2011年8月18日 16:45

全部回复

  • Question
    登录进行投票
    0
    登录进行投票

    先宣告一个类(MySort)去实作IComparer<string>

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;namespace ConsoleApplication2{  class MySort:IComparer<string>  {       public int Compare(string x, string y)    {      if (x.Length >= y.Length)      {        return -1;      }      else      {        return 1;      }    }  }}

    主程序

    using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2{  class Program  {    static void Main(string[] args)    {      List<string> mylist = new List<string>();      mylist.Add("字符串22");      mylist.Add("字符串1");      mylist.Add("字符串4444");      mylist.Add("字符串333");      mylist.Sort(new MySort());      foreach (var item in mylist)      {        Console.WriteLine(item);      }      Console.ReadKey();    }  }}


    結果:

     


    Shadowと愉快なコード達
    • 已标记为答案 小五kyle 2011年8月18日 19:01
    2011年8月18日 16:45
  • Question
    登录进行投票
    0
    登录进行投票
    这个答案对编程习惯真是误导。
    第一,给类命名不当。StringLengthComparer这样的名字就好很多。
    第二,实现中Compare()函数里面的 if-else 是冗余的。
    第三,Main()中的mylist命名不符合camelName规范。要么是myList,要么就list
    class StringLengthComparer : IComparer<string>{ public int Compare(String a, String b)  {   return b.Length - a.Length; }}static void Main(string[] args){ List<string> strList = new List<string>(4); strList.Add("字符串22"); strList.Add("字符串1"); strList.Add("字符串4444"); strList.Add("字符串333"); strList.Sort(new StringLengthComparer()); foreach (string str in strList) {   Console.WriteLine(str); }}


    MCPD (Windows & Web)






    2011年8月18日 19:37
0 0
原创粉丝点击