zoukankan      html  css  js  c++  java
  • 为collection增加排序功能

    注意到 CollectionBase.InnerList属性,这是一个protected 属性,得到一个包含了CollectionBase中的元素的ArrayList。

    所以可以调用ArrayList.Sort()来实现排序。

    using System;

     

    public class Person {

          public Person(string name, int age) {

                this.Name = name;

                this.Age = age;

          }

          public string Name;

          public int Age;

    }

     

    public class People : System.Collections.CollectionBase {

          public int Add(Person p) {

                return List.Add(p);

          }

     

          public void SortByName() {

                System.Collections.IComparer sorter = new NameSortHelper();

                InnerList.Sort(sorter);

          }

          public void SortByAge() {

                System.Collections.IComparer sorter = new AgeSortHelper();

                InnerList.Sort(sorter);

          }

     

          private class NameSortHelper : System.Collections.IComparer {

                public int Compare(object x, object y) {

                      Person p1 = (Person) x;

                      Person p2 = (Person) y;

                      return p1.Name.CompareTo(p2.Name);

                }

          }

     

          private class AgeSortHelper : System.Collections.IComparer {

                public int Compare(object x, object y) {

                      Person p1 = (Person) x;

                      Person p2 = (Person) y;

                      if(p1.Age > p2.Age)

                            return 1;

                      if(p1.Age < p2.Age)

                            return -1;

                      return 0;

                }

          }

    }

     

     

    class App {

          [STAThread]

          static void Main(string[] args) {

                People people = new People();

                people.Add(new Person("John" , 30));

                people.Add(new Person("Bob" , 20));

                people.Add(new Person("Zeke" , 18));

               

                //people.SortByAge();

                people.SortByName();

     

                foreach(Person p in people) {

                      Console.WriteLine("{0} , {1}", p.Name, p.Age);

                }

          }

    }

     

     

    http://unboxedsolutions.com/sean/archive/2004/08/10/292.aspx

    作者:峻祁连
    邮箱:junqilian@163.com
    出处:http://junqilian.cnblogs.com
    转载请保留此信息。
  • 相关阅读:
    5M1E,软件质量管理最佳解决方案
    Laravel 刚创建的项目 API 无法使用 Session,是没有在Api的请求内开启Session
    python添加默认模块搜索路径
    [传纸条]
    [miller_rabin]
    国内rog游戏手机2与国际版本的 差别
    windows下依端口查进程
    gor phone 2 优缺点
    IDA pro 6.8 导入cpu解析模块报错 ImportError: No module named ida_ bytes
    JEB 4.5 新增 RISC-V 反编译器支持
  • 原文地址:https://www.cnblogs.com/junqilian/p/1271203.html
Copyright © 2011-2022 走看看