2009-01-19 20:10

c# ArrayList 的排序问题!

c# ArrayList 的排序问题!

我看见网上有人用IComparer接口实现ArrayLIst 的排序问题 ,于是自己写了个小例子,编译已经通过,和大家一块分享。有不足之处,望不吝指正。

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

);

[JScript]

function Compare(

x : Object,

y : Object

) : int;

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

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

源码:

using System; 
       using System.Collections;

class ArrayListT{
       private struct eployee
        {
                public string name;
               public int age;
                 public string sex;
         }
       ArrayListT(){}

class eployeeCompare: System.Collections.IComparer
        {

public int Compare(object x,object y)
               {
                            return ((eployee)x).age - ((eployee)y).age;
                 }

}

public static void Main()
        {
                eployee ep1 = new eployee();
                ep1.name = "小张";
               ep1.age = 21;
               ep1.sex = "女";

eployee ep2 = new eployee();
                ep2.name = "小李";
               ep2.age = 20;
               ep2.sex = "女";

eployee ep3 = new eployee();
                ep3.name = "小王";
                 ep3.age = 26;
               ep3.sex = "女";

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

eployeeCompare eployee = new eployeeCompare();
  
                 list.Sort(eployee);

foreach (eployee ep in list)
                {
                       Console.WriteLine("the eployee's name is :{0} age is{1}",ep.name,ep.age);
                 }  
               Console.ReadLine();

}
         }

c# ArrayList 的排序问题!的更多相关文章

  1. ArrayList等常见集合的排序问题

    对于ArrayList等常用的集合具体业务类,基本上都实现了Comparable接口,即可以用来比较装载的对象实体. 主要用Collections.sort方法对集合类中的对象进行排序 Collect ...

  2. 关于spring aop Advisor排序问题

    关于spring aop Advisor排序问题 当我们使用多个Advisor的时候有时候需要排序,这时候可以用注解org.springframework.core.annotation.Order或 ...

  3. @NamedEntityGraphs --JPA按实体类对象参数中的字段排序问题得解决方法

    JPA按实体类对象参数中的字段排序问题得解决方法@Entity @Table(name="complaints") @NamedEntityGraphs({ @NamedEntit ...

  4. java Collection中的排序问题

    java Collection中的排序问题 这里讨论list.set.map的排序,包括按照map的value进行排序. 1)list排序 list排序可以直接采用Collections的sort方法 ...

  5. 编程之美—烙饼排序问题(JAVA)

    一.问题描述 星期五的晚上,一帮同事在希格玛大厦附近的"硬盘酒吧"多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:"我以前在餐      馆打工,顾 ...

  6. 计算机程序的思维逻辑 (38) - 剖析ArrayList

    从本节开始,我们探讨Java中的容器类,所谓容器,顾名思义就是容纳其他数据的,计算机课程中有一门课叫数据结构,可以粗略对应于Java中的容器类,我们不会介绍所有数据结构的内容,但会介绍Java中的主要 ...

  7. 分享个 之前写好的 android 文件流缓存类,专门处理 ArrayList、bean。

    转载麻烦声明出处:http://www.cnblogs.com/linguanh/ 目录: 1,前序 2,作用 3,特点 4,代码 1,前序  在开发过程中,client 和 server 数据交流一 ...

  8. 深入理解java中的ArrayList和LinkedList

    杂谈最基本数据结构--"线性表": 表结构是一种最基本的数据结构,最常见的实现是数组,几乎在每个程序每一种开发语言中都提供了数组这个顺序存储的线性表结构实现. 什么是线性表? 由0 ...

  9. 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)

    在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...

随机推荐

  1. Zookeeper(二)-- 客户端操作命令

    一.前提 开启zookeeper服务端,用客户端连接.输入help,查看可使用命令,如下图所示: 操作无非就是增删改查等. 二.增加 格式:create [-s] [-e] path data acl ...

  2. C语言的基本构成

    C语言的基本构成 知识点:C语言的注释:关键字:书写风格:常量和变量 重要程度:★★★★ 1.C语言的良好风格 用C语言编写的程序,称为C语言源程序,简称C程序. 本节将通过一个简单的C程序例子,向大 ...

  3. C++新式转型

    本文对四种标准C++的类型转换符:static_cast.dynamic_cast.reinterpret_cast.和const_cast进行了介绍,通过本文应当能够理解这四个类型转换操作符的含义. ...

  4. oracle中怎么用normal方式登录怎么自定义用户名和密码

    1.首先要创建一个用户.必须使用有最高权限的用户来创建,语句如下: create user shopping identified by 123456;--创建shopping用户,密码123456 ...

  5. c++11——基于范围的for循环

    c++11中有基于范围的for循环,基于范围的for循环可以不再关心迭代器的概念,只需要关系容器中的元素类型即可,同时也不必显式的给出容器的开头和结尾. int arr[] = {1, 2, 3, 4 ...

  6. 【Base64】用 js 编 解 码 base64

    理论补充:  Base64是一种基于64个可打印字符来表示二进制数据的表示方法. 由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符. 三个字节有24个比特,对应于4个Base64单 ...

  7. MQTT的学习研究(一)MQTT学习网站

    MQTT的官方推荐网站: http://mqtt.org/software 使用IBM 的MQTT协议实现push消息地址: http://tokudu.com/2010/how-to-impleme ...

  8. 关于Java中按值传递和按引用传递的问题详解

    写了两个方法,一个是多关键字的快速排序,一个是基于多关键字的基速排序.两个方法的参数列表是一样一样的,但是快速排序正常工作,但是基数排序传出来的参数一点没有改变,苦思冥想了半天也没想通是怎么回事,于是 ...

  9. JQuery 用法总结

    1.隐藏与显示,用于div等等 //隐藏id=myTab下的所有li标签 $("#myTab li").hide(); //动画隐藏,1秒内隐藏该对象 $(); //显示class ...

  10. ios 监听设备旋转方向

    -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { if(fromI ...