用IComparable来实现可排序的集合
2005-12-28 15:18
435 查看
作者:Mahesh Chand
原文地址:http://www.c-sharpcorner.com/UploadFile/mahesh/SortableArrays10212005115603AM/SortableArrays.aspx?ArticleID=d374d179-08e9-4473-b7e4-1991fad8affa
.NET Framework类库中提供了几个支持在集合中有追加功能的接口,比如:ICollection,IList和IComparable。
实现 IComparable
IComparable接口用来支持在集合中排序。它有一个函数——CompareTo。当你设计分类对象时,你必须实现IComparable的CompareTo方法。
比如,我做一个Developer类来继承IComparable。
public class Developer : IComparable
public int CompareTo(object obj)
public int CompareTo(object obj)
public enum SortFilter
private static SortFilter sortingBy = SortFilter.FirstName;
public static SortFilter SortingBy
public int CompareTo(object obj)
正如你所看到的上面的代码,我为每一个分类条件加入一个case语句。现在我的类准备好了支持排序。所有我做的工作是:建立一个Developer对象的ArrayList,设置分类过滤器(SortFilter),调用Sort方法。
下面的代码生成一个Developer类型的ArrayList:
private ArrayList GetList()
下面的代码设置以"FirstName"来分类,调用ArrayList的Sort方法。现在ArrayList将返回分类结果。
ArrayList list = GetList();
Developer.SortingBy = (SortFilter)Enum.Parse(typeof(SortFilter), "FirstName");
list.Sort();
排序顺序
现在你可能还要在你的对象中加入排序的顺序(升序还是降序)。为了完成这个,我加入一个SortOrder枚举:
public enum SortOrder
private static SortOrder sortingOrder = SortOrder.Ascending;
public static SortOrder SortingOrder
public int CompareTo(object obj)
Developer.SortingOrder = (SortOrder)Enum.Parse(typeof(SortOrder), "Descending");
list.Sort();
原文页面有代码下载。
原文地址:http://www.c-sharpcorner.com/UploadFile/mahesh/SortableArrays10212005115603AM/SortableArrays.aspx?ArticleID=d374d179-08e9-4473-b7e4-1991fad8affa
.NET Framework类库中提供了几个支持在集合中有追加功能的接口,比如:ICollection,IList和IComparable。
实现 IComparable
IComparable接口用来支持在集合中排序。它有一个函数——CompareTo。当你设计分类对象时,你必须实现IComparable的CompareTo方法。
比如,我做一个Developer类来继承IComparable。
public class Developer : IComparable
public int CompareTo(object obj)
public int CompareTo(object obj)
public enum SortFilter
private static SortFilter sortingBy = SortFilter.FirstName;
public static SortFilter SortingBy
public int CompareTo(object obj)
正如你所看到的上面的代码,我为每一个分类条件加入一个case语句。现在我的类准备好了支持排序。所有我做的工作是:建立一个Developer对象的ArrayList,设置分类过滤器(SortFilter),调用Sort方法。
下面的代码生成一个Developer类型的ArrayList:
private ArrayList GetList()
下面的代码设置以"FirstName"来分类,调用ArrayList的Sort方法。现在ArrayList将返回分类结果。
ArrayList list = GetList();
Developer.SortingBy = (SortFilter)Enum.Parse(typeof(SortFilter), "FirstName");
list.Sort();
排序顺序
现在你可能还要在你的对象中加入排序的顺序(升序还是降序)。为了完成这个,我加入一个SortOrder枚举:
public enum SortOrder
private static SortOrder sortingOrder = SortOrder.Ascending;
public static SortOrder SortingOrder
public int CompareTo(object obj)
Developer.SortingOrder = (SortOrder)Enum.Parse(typeof(SortOrder), "Descending");
list.Sort();
原文页面有代码下载。
相关文章推荐
- Effective C# 使用IComparable和IComparer接口实现排序关系
- My_Java之笔记(8)- 实现TreeSet集合的排序方法
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- Hibernate中实现Set集合的排序
- DataGridView使用非泛型或者未实现IBindingList接口泛型集合的列排序问题
- C#通过IComparable实现ListT.sort()排序
- java中Comparator的用法 -- 实现集合和数组排序
- 比较和排序(IComparable和IComparer以及它们的泛型实现)
- 比较和排序(IComparable和IComparer以及它们的泛型实现)
- springboot学习笔记5(JPA 实现分页、排序、返回map集合)
- linq排序,如何实现又有数字又有文本的string集合先按数字再按文本排序
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 仿手机通讯录,汽车之家选车频道实现汉字名称首字母排序,字母分组集合
- 线性表的顺序表 实现,及应用-----西文排序+前m个元素和后n个元素进行整体互换+构造纯集合+有序表求纯集合+循环有序链表表示两集合的并集
- More Effective C# 第21条、第22条 实例代码解析(可比较 可排序 自定义对象集合完整演示) IEquatable, IComparable,IEnumerable
- 比较和排序(IComparable和IComparer以及它们的泛型实现)
- Java集合对象的排序使用Collection.sort方法,先实现Comparable接口
- Golang 实现 set 集合,变相实现 切片去重、排序 功能
- 定义一个List集合并实例化对应的实现类对象。循环输入任意个整数,输入0结束输入循环,对集合中的数据进行从大到小的排序后输出
- 集合框架——Set(TreeSet实现Comparator方法排序)