Effective C# Item26:使用IComarable和IComparer接口实现排序关系
2010-01-19 23:24
761 查看
.NET框架定义了两个接口来描述类型的排序关系:IComparable和IComparer,其中IComparable接口定义了类型的自然排序方式,IComparer则为类型提供了另外的排序方式。
我们来看下面的代码。
代码
上面的代码中,首先定义了一个实现了IComparer接口的类型,该类型的Compare()方法中,以Employee的Age作为比较的依据。然后定义了一个测试方法,定义了一个元素类型是Employee类型的List,然后以两种方式对List进行排序,并输出排序后的结果。
上面Test()方法的执行结果如下所示。
综上,IComparable接口和IComparer接口为类型实现排序关系提供了两种标准的机制,IComparable接口应该用于为类型实现最自然的排序关系,而ICpmparer接口则用于定制排序的方式。
我们来看下面的代码。
代码
public class AgeComparer : IComparer<Employee> { public int Compare(Employee x, Employee y) { return x.Age.CompareTo(y.Age); } } //Test Method private static void Test() { List<Employee> listEmp = new List<Employee>(); listEmp.Add(new Employee("Wing", 24)); listEmp.Add(new Employee("UnKnown", 25)); listEmp.Sort(); Console.WriteLine("ouput info with default sort:"); foreach (Employee emp in listEmp) { Console.WriteLine(emp.Name); } Console.WriteLine("output info with specific sort:"); AgeComparer comparer = new AgeComparer(); listEmp.Sort(comparer); foreach (Employee emp in listEmp) { Console.WriteLine(emp.Name); } }
上面的代码中,首先定义了一个实现了IComparer接口的类型,该类型的Compare()方法中,以Employee的Age作为比较的依据。然后定义了一个测试方法,定义了一个元素类型是Employee类型的List,然后以两种方式对List进行排序,并输出排序后的结果。
上面Test()方法的执行结果如下所示。
综上,IComparable接口和IComparer接口为类型实现排序关系提供了两种标准的机制,IComparable接口应该用于为类型实现最自然的排序关系,而ICpmparer接口则用于定制排序的方式。
相关文章推荐
- Effective C# Item26:使用IComarable和IComparer接口实现排序关系
- Effective C# 使用IComparable和IComparer接口实现排序关系
- Effective C# 使用IComparable和IComparer接口实现排序关系
- c# 内部类使用接口IComparer实现排序
- Icomparable与Icomparer实现显示接口以显示接口排序为准
- C#使用IComparer自定义List类实现排序的方法
- 对于集合中的自定义对象使用collections.sort 进行排序,需要实现compartor接口
- “轻松加愉快”地实现并使用IComparer接口
- “轻松加愉快”地实现并使用IComparer接口
- 使用 Comparable 接口实现对象的属性排序
- 对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类
- “轻松加愉快”地实现并使用IComparer接口
- 对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类(转)
- 比较器的使用,实现 Comparable接口,功能:实现对象的多条件比较,排序
- List<>根据指定属性排序(实现IComparer接口)
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 使用Comparatro接口实现自定义排序
- Effective C# 学习笔记(三十一)利用IComparable<T>和IComparer<T>接口来实现排序关系
- 使用IComparable和IComparer接口对集合进行排序