zoukankan      html  css  js  c++  java
  • ArrayList.Sort 方法 (IComparer)

    例如:

    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 ,该接口只有一个成员函数需要你去实现。

    描述如下:

    [C#]

    int Compare(

    object x,

    object y

    );

    知道了这些那我们来实现一个吧

    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);

  • 相关阅读:
    php method_exists( $object , string $method_name )
    php伪类型 (mixed)
    6.6-2-数组与数据结构(用数组及其函数实现堆栈等数据结构)
    6.6-1-php数组相关(2)
    2017.6.5-2-php数组相关(1)
    2017.6.5-1-php函数应用及流程控制
    CodePage
    bat批处理教程
    pip安装及源
    CentOS安装Python3
  • 原文地址:https://www.cnblogs.com/bear831204/p/1305541.html
Copyright © 2011-2022 走看看