刚复习了Array类的sort()方法, 这里列举几个常用的,和大家一起分享。

Array类实现了数组中元素的冒泡排序。Sort()方法要求数组中的元素实现IComparable接口。如System.Int32

和System.String实现了IComparable接口,所以下面的数组可以使用Array.Sort()。

string[] names = { "Lili""Heicer""Lucy" };Array.Sort(names);foreach (string n in names) {    Console.WriteLine(n);}

输出排序后的数组:

如果对数组使用定制的类,就必须实现IComparable接口。这个借口定义了一个方法CompareTo()。

Person类
1 public class Person : IComparable {
2 public Person() { }
3 public Person(string name, string sex) {
4 this.Name = name;
5 this.Sex = sex;
6 }
7 public string Name;
8 public string Sex;
9
10 public override string ToString() {
11 return this.Name + " " + this.Sex;
12 }
13 #region IComparable 成员
14 public int CompareTo(object obj) {
15 Person p = obj as Person;
16 if (p == null) {
17 throw new NotImplementedException();
18 }
19 return this.Name.CompareTo(p.Name);
20 }
21 #endregion
22 }

这里就可以对Person对象数组排序了:

1 Person[] persons = { new Person("Lili""Female"), new Person("Heicer""Male"), new Person("Lucy""Female") };2 Array.Sort(persons); 3  foreach (Person p in persons){4     Console.WriteLine(p);5 }

排序后的结果:

如果Person对象的排序方式不同,或者不能修改在数组中用作元素的类,就可以执行ICompare接口。这个接口定

义了Compare()方法。ICompare接口必须要独立于要比较的类。这里定义PersonCompare类

PersonCompare类
1 public class PersonComparer:IComparer {
2 public PersonComparer() { }
3 #region IComparer 成员
4 public int Compare(object x, object y) {
5 Person p1 = x as Person;
6 Person p2 = y as Person;
7 if (p1 == null || p2 == null) {
8 throw new ArgumentException("Person为空");
9 }
10 return p1.Name.CompareTo(p2.Name);
11 }
12 #endregion
13 }

现在,可以将一个PersonComparer对象传送给Array.Sort()方法的第二个变元。

Array.Sort(persons, new PersonComparer());

结果是就不输出了。

另外Sort()方法也可以把委托作为参数:

pulic delegate int Comparison<T>(T x, T y);

对于Person对象数组,参数T是Person类型:

 Array.Sort(persons, delegate(Person p1, Person p2) {return p1.Name.CompareTo(p2.Name);});

或者可以使用λ表达式传送两个Person对象,给数组排序:

Array.Sort(persons, (p1, p2) => p1.Name.CompareTo(p2.Name));

结果同样就不输出了。

Array类的Sort()方法的更多相关文章

  1. .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)

    从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...

  2. C# Array类的Sort()方法

    Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System.Int32 和System.String实现了IComparable接口,所以下 ...

  3. js中的数组Array定义与sort方法使用示例

    Array的定义及sort方法使用示例 Array数组相当于java中的ArrayList  定义方法:  1:使用new Array(5  )创建数组 var ary = new Array(5): ...

  4. Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习

    首先放上测试效果图 设计框架 具体的代码实现 创建玩家类 public class Player implements Comparable<Player>{ int id; String ...

  5. 测试Array对象的sort方法的作用。将1985,1970,1999,1998,2000,1963这些年份按升序输出。

    <script type="text/javascript">var years = new Array(1985,1970,1999,1998,2000,1963); ...

  6. 重载Array类的contains方法

    var allFilters = self.filtersContainer?.filters ?? [OpalFilter]() if let sorter = filtersContainer?. ...

  7. 使用Java语言实现,自己主动生成10个整数(1~100,求出生成数列中的最大值和最小值,不同意使用Arrays类的sort方法

    这是考察主要的java基础,没啥难点,直接上代码,近期在准备面试,所以做一些基础的面试题练练手 public class Demo1 { public static void main(String[ ...

  8. Flex Array内置排序方法的使用

    在Array类中,提供内置的排序方法.排序是在软件开发的过程中,经常遇到的问题.通过这些内置的方法,可以快速轻便的进行排序操作. Array类提供sort方法对Array实例进行排序.sort方法没有 ...

  9. 使用Sort方法对数组进行快速排序

    实现效果: 知识运用: Array类的Sort方法 public static void Sort(Array array)   // array:要排序的一维Array数组 实现代码: static ...

随机推荐

  1. ch4-注册 登陆 实现 cookie使用

    1 mysql 回调函数优化 1.1 mysql代码: config.query(handlerStr, value, function (err, data) { callback &&am ...

  2. ZOJ2345Gold Coins 简单分块

    昨天做过一样的题: 平方和公式:n*(n+1)*(2n+1) #include<cstdio> #include<cstdlib> #include<iostream&g ...

  3. webpack 的使用1

    进入指定文件夹  npm init 安装 npm install webapck --save-dev 根目录下新建hello.js 将文件打包到指定文件  Asset :打包成的文件名称 Chunk ...

  4. WCF的客户端与服务端

    服务端 : 1.新增一个Winform的服务端 2.选择以上建的项目,增加一个WCF服务 3.定义三个方法,一个不返回结果不带参数.返回结果带参数.返回结果以类的方式传递参数 4.Service1继承 ...

  5. win8.1 安装

    下载了Windows8.1企业版的iso文件,文件名称:cn_windows_8_1_enterprise_x86_dvd_2791409.iso 下载地址: http://msdn.itellyou ...

  6. linux 内核 zImage 生成过程分析

    1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息.符号表的最初的内核,大小约23MB: arm ...

  7. 我的第一个python web开发框架(10)——工具函数包说明(一)

    PS:原先是想直接进入功能开发,要用到什么函数时再创建,这样也容易熟悉每个函数的由来和使用方法,但考虑到这样操作,到时会经常在不同文件间切换,不好描述,容易造成混乱,所以还是使用函数库这种方式来说明. ...

  8. Java反射机制(Reflect)解析

    一.导读 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计 ...

  9. JAVA基础知识总结:三

    一.Java语句的执行结构 1.顺序语句 按照顺序从上往下依次执行的语句,中间没有任何的判断和跳转 2.分支语句 根据不同的条件来产生不同的分支 if语句.switch语句 3.循环语句 重复执行某句 ...

  10. mybatis generator eclipse插件的安装

    mybatis generator 可以提高开发速度,这个插件可以自动生成代码,创建DAO层相关代码,就像利用HIbernate反相生成一样,安装前可以先到百度网盘下载: 文件:MyBatisGene ...