zoukankan      html  css  js  c++  java
  • list的排序

    用ICompare来排序:

    1、建一个结构雇员的结构

    private struct Eployee{
       public string name;
       public int age;
       public string sex;
    }
    2、新建3个"雇员"
    Eployee ep1=new Eployee();
    ep1.name="小张";
    ep1.age=21;
    ep1.sex="男";
    Eployee ep2=new Eployee();
    ep2.name="老李";
    ep2.age=43;
    ep2.sex="男";
    Eployee ep3=new Eployee();
    ep3.name="施施";
    ep3.age=18;
    ep3.sex="男";
    3、将3个"雇员" 加入"雇员列表";

    ArrayList EmployeeList=new ArrayList();
    EmployeeList.Add(ep1);
    EmployeeList.Add(ep2);
    EmployeeList.Add(ep3);

    好了一切准备就绪,现在希望EmployeeList中得"雇员"是按年龄排序的。
    咋办呢?
    其实很简单,我们没必要自己去实现某个排序方法,冒泡或其他什么的。ArrayList 提供了我们现成的排序方法Sort();
    它有三个重载,不管使用哪一个,至少要你提供一个Comparer:IComparer;来告诉Sort方法 你对"雇员"们的排序依据。
    这个Comparer必须实现接口:System.Collections.IComparer ,该接口只有一个成员函数需要你去实现。
    描述如下:
    [Visual Basic]
    Function Compare( _
       ByVal x As Object, _
       ByVal y As Object _
    ) As Integer
    [C#]
    int Compare(
       object x,
       object y
    );
    [C++]
    int Compare(
       Object* x,
       Object* y
    );
    [JScript]
    function Compare(
       x : Object,
       y : Object
    ) : int;
    (可以去参考msdn)
    知道了这些那我们来实现一个吧
    private class myEmployeeCompare:System.Collections.IComparer {
       public int Compare(object x,object y){
        return ((Eployee)x).age-((Eployee)y).age;
       }
      
    }
    因为我们比较的是“雇员”的age,所以我们可以放心的写实现语句
    return ((Eployee)x).age-((Eployee)y).age;

    myEmployeeCompare EmployeeCompare=new myEmployeeCompare();

    ok现在我们可以对"雇员"们按年龄排序了

    EmployeeList.Sort(EmployeeCompare);

    另外我们还可以通过反射来实现Compare,这样可以实现通用


     ListCompareDemo.rar

     ListReflectorCompareDemo.rar

  • 相关阅读:
    Java面试题—初级(4)
    Java面试题—初级(3)
    Java面试题—初级(2)
    Java面试题—初级(1)
    在ESXi使用esxcli命令強制关闭VM
    重置mysql的root密码
    通过RHN网站给RHEL打补丁
    Linux命令之rhn_check
    一键GHOST
    Http错误大全
  • 原文地址:https://www.cnblogs.com/200325074/p/1446147.html
Copyright © 2011-2022 走看看