C# 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类public class Person : IComparable {
public Person() { }
public Person(string name, string sex) {
this.Name = name;
this.Sex = sex;
}
public string Name;
public string Sex;
public override string ToString() {
return this.Name + " " + this.Sex;
}
#region IComparable 成员
public int CompareTo(object obj) {
Person p = obj as Person;
if (p == null) {
throw new NotImplementedException();
}
return this.Name.CompareTo(p.Name);
}
#endregion
}
这里就可以对Person对象数组排序了:
Person[] persons = {
new Person("Lili", "Female"),
new Person("Heicer", "Male"),
new Person("Lucy", "Female") };
Array.Sort(persons);
foreach (Person p in persons){
Console.WriteLine(p);
}
排序后的结果:

如果Person对象的排序方式不同,或者不能修改在数组中用作元素的类,就可以执行ICompare接口。这个接口定
义了Compare()方法。ICompare接口必须要独立于要比较的类。这里定义PersonCompare类
PersonCompare类public class PersonComparer:IComparer {
public PersonComparer() { }
#region IComparer 成员
public int Compare(object x, object y) {
Person p1 = x as Person;
Person p2 = y as Person;
if (p1 == null || p2 == null) {
throw new ArgumentException("Person为空");
}
return p1.Name.CompareTo(p2.Name);
}
#endregion
}
现在,可以将一个PersonComparer对象传送给Array.Sort()方法的第二个变元。
Array.Sort(persons, new PersonComparer());
结果是就不输出了。
另外Sort()方法也可以把委托作为参数:
pulic delegate int Comparison<</SPAN>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));
结果同样就不输出了。
C# Array类的Sort()方法的更多相关文章
- Array类的Sort()方法
刚复习了Array类的sort()方法, 这里列举几个常用的,和大家一起分享. Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System. ...
- .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)
从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...
- 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 ...
随机推荐
- Linux系统编程:线程控制
一.提出问题 问1.线程存在的意义是什么?什么时候适合使用多线程? 答1.在单进程环境中实现多任务,线程可访问其所在进程的资源,例如内存.描述符等.对于单进程,如果要完成多项任务,这些任务只能依次执行 ...
- redis的数据类型(二)string类型
下面讲解value,value包括String.List.Set.Sorted Set.Hash 一.String类型 1.string类型 String是最基本的类型,而且Stirng类型是二 ...
- rails 中 create, new, build, save 的用法以及误区汇总 (转)
自己很初级,初级的不能再初级,所以初次接触rails的时候,对于里面的create,new,build等方法不是很了解,用的很混乱,导致经常出现不必要的bug,很苦恼,决定,总结一下,结合网上已有资源 ...
- 使用Redis SETNX 命令实现分布式锁(转载)
使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法. SETNX命令简介 命令格式 SETNX key value 将 key 的值设为 value,当且仅当 key 不存在. 若 ...
- 应输入 #endregion 指令报错的排查技巧
VS2010中错误排查的一个小技巧,欢迎大家吐槽: 错误 9 应输入 #endregion 指令sses.cs 3778 2 xxx.xx 这个错很明显,是缺少#endr ...
- 如鹏网学习笔记(十一)JQuery
一.jQuery简介 jQuery是一个JavaScript库,特性丰富,包含若干对象和很多函数,可以替代传统DOM编程的操作方式和操作风格 jQuery通过对DOM API.DOM事件的封装,提供了 ...
- [javaSE] 网络编程(TCP-并发上传图片)
客户端: 1.服务端点 2.读取客户端已有的图片数据 3.通过socket输出流将数据发给服务端 4.读取服务端反馈信息 5.关闭 获取Socket对象,new出来,构造参数:String的服务端ip ...
- 单源最短路(Dijkstra算法)
#返回上一级 @Author: 张海拔 @Update: 2015-03-11 @Link: http://www.cnblogs.com/zhanghaiba/p/3514570.html Dijk ...
- static关键字作用
之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static.final和static一样,都是一个小问题可以看到一个人的基础是否扎实以及平时是否 ...
- <input>属性为number,maxlength不起作用的解决方案
<input type="text" maxlength="11" /> 效果ok, 当 <input type="number&q ...