Array类的Sort()方法
刚复习了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()方法的更多相关文章
- .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)
从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...
- C# Array类的Sort()方法
Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System.Int32 和System.String实现了IComparable接口,所以下 ...
- js中的数组Array定义与sort方法使用示例
Array的定义及sort方法使用示例 Array数组相当于java中的ArrayList 定义方法: 1:使用new Array(5 )创建数组 var ary = new Array(5): ...
- Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习
首先放上测试效果图 设计框架 具体的代码实现 创建玩家类 public class Player implements Comparable<Player>{ int id; String ...
- 测试Array对象的sort方法的作用。将1985,1970,1999,1998,2000,1963这些年份按升序输出。
<script type="text/javascript">var years = new Array(1985,1970,1999,1998,2000,1963); ...
- 重载Array类的contains方法
var allFilters = self.filtersContainer?.filters ?? [OpalFilter]() if let sorter = filtersContainer?. ...
- 使用Java语言实现,自己主动生成10个整数(1~100,求出生成数列中的最大值和最小值,不同意使用Arrays类的sort方法
这是考察主要的java基础,没啥难点,直接上代码,近期在准备面试,所以做一些基础的面试题练练手 public class Demo1 { public static void main(String[ ...
- Flex Array内置排序方法的使用
在Array类中,提供内置的排序方法.排序是在软件开发的过程中,经常遇到的问题.通过这些内置的方法,可以快速轻便的进行排序操作. Array类提供sort方法对Array实例进行排序.sort方法没有 ...
- 使用Sort方法对数组进行快速排序
实现效果: 知识运用: Array类的Sort方法 public static void Sort(Array array) // array:要排序的一维Array数组 实现代码: static ...
随机推荐
- 基于LoadRunner11,以wifi热点方式录制APP脚本简单指导
本想详细写下操作过程,但并不觉着十分必要,通过baidu或我要自学网均能找到相关资料,所以详细操作过程不再赘述,只是把过程中遇到的问题说明下解释下,让大家“录制APP”的路更平坦! 1.如何使用Loa ...
- 不同Activity之间传递线程
场景:Android由Activiy A创建Activiy B时 ,A创建的线程B中依然需要调用,这时候需要在两个activity之间传递线程的信息. 解决: 方式一:线程自己维护自己的静态句柄(比较 ...
- bootstrap 轮播模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- WPF加载程序集中字符串资源
WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源. 添加图 ...
- WPF---Effect效果
在 WPF 中,可以使用 BitmapEffect 对象为每一个 Visual 对象生成各种各样的效果,一个 Visual 对象可以设置一种或多种 BitmapEffect 效果,WPF 内置了几种效 ...
- 学习PID
最近在想自己的文章有些是不是写的太难以理解了呢.........竟然好多人看了还是会直接问我很多问题....... 其实PID哈靠自己想像就能自己写出来自己的代码,也许是网上的讲的太过的高深什么积分微 ...
- DevOps之唠叨话
唠叨话 教学:人类培养态度.传授知识.训练技能的活动. 教学手册(Teaching Manual) 教学形式:教材与课程,师生(一对一.一对多).教学内容:系统框架和问答机制,结构(前言.目录.正文. ...
- riot.js教程【二】组件撰写准则、预处理器、标签样式和装配方法
基本要求 一个riot标签,就是展现和逻辑的组合(也就是html和JS): 以下是编写riot标签最基本的规则: 先撰写HTML,再撰写JS,JS代码可以写在<script>标签内部,但这 ...
- 【转载】jQuery手机移动端触屏日历日期选择
文章转载自 科e互联 http://www.internetke.com/ 原文链接:http://www.internetke.com/effects/css3/2015/0120/1222.htm ...
- Django实现用户密码重置
使用Django内置的认证视图实现简单的通过邮箱重置密码的功能版本:django 1.11 在django.contrib.auth.views中提供了四个类视图用于密码重置 class Passwo ...