ArrayList<ListItem>的排序
2013-06-21 21:13
330 查看
这是一个自己写比较器进行ArrayList<ListItem>排序的练习:
一、内容说明:
1,有一个类ListItem:
ListItem的数组ArrayListItem
3,上面ArryListItem中的各个ListItem不是按序排列的,如果将ArrayListItem作为数据源绑定显示到页面上,会发现显示比较混乱,所以我们需要对ArrayListItem进行排序。
因为ArrayListItem中的各个元素不能直接使用System.IComparable进行排序,所以我们要定义一个比较器:
这里,我们创建了一个ICompare的继承类,来重写了Compare方法,通过比较ListItem中Text的大小来排序。
最后,调用排序方法:
则,这时的ArrayListItem就是排好序的结果。
二、相关知识回顾:
1,比较器有两个参数a、b,我们认为第一个参数a在比较序列中是前一个,第二个参数b是后一个。比较器有一个返回结果。比较器使用的是冒泡排序。
当返回值是负数时,认为前一个元素小,则排列不变;返回值是正数时,认为后一个元素小,则后一个元素冒泡上浮。从而实现最终排序。
如果要得到倒序排列的结果,那么只需要修改比较的内容就可以了。
如果前一个元素a小,那么返回值是正数,则后一个元素上浮。所以最终排列的结果是大的在前,是一个倒序排列。
一、内容说明:
1,有一个类ListItem:
var ArrayListItem = new ArrayList { new ListItem("Filing Language","LGF"), new ListItem("All Names", "ALLNAMES"), new ListItem("Main Inventor Name","INF"), };
ListItem的数组ArrayListItem
3,上面ArryListItem中的各个ListItem不是按序排列的,如果将ArrayListItem作为数据源绑定显示到页面上,会发现显示比较混乱,所以我们需要对ArrayListItem进行排序。
因为ArrayListItem中的各个元素不能直接使用System.IComparable进行排序,所以我们要定义一个比较器:
public class ListItemCompare : IComparer { public int Compare(object x, object y) { return System.String.CompareOrdinal(((ListItem)x).Text, ((ListItem)y).Text); } }
这里,我们创建了一个ICompare的继承类,来重写了Compare方法,通过比较ListItem中Text的大小来排序。
最后,调用排序方法:
ArrayListItem.Sort(new ListItemCompare());
则,这时的ArrayListItem就是排好序的结果。
二、相关知识回顾:
1,比较器有两个参数a、b,我们认为第一个参数a在比较序列中是前一个,第二个参数b是后一个。比较器有一个返回结果。比较器使用的是冒泡排序。
当返回值是负数时,认为前一个元素小,则排列不变;返回值是正数时,认为后一个元素小,则后一个元素冒泡上浮。从而实现最终排序。
public int Compare(int a, int b) { return a - b; }
如果要得到倒序排列的结果,那么只需要修改比较的内容就可以了。
public int Compare(int a, int b) { return b - a; }
如果前一个元素a小,那么返回值是正数,则后一个元素上浮。所以最终排列的结果是大的在前,是一个倒序排列。
相关文章推荐
- java List<Item> its=new ArrayList<Item>(); Map按value中的某字段排序
- List<T>的各种排序方法
- List&lt;T&gt;的搜索和排序
- List<T> 属性排序
- C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别
- 【原】list<T>排序
- 对List<T> 随机排序
- List<T>绑定到datagridview时不能排序
- 不存在具有键“xxxId”的“IEnumerable<SelectListItem>”类型的 ViewData 项
- List<Map> 排序
- List<Pojo>按pojo对象的属性排序
- ArrayList list = new ArrayList() 和List<String> list = new ArrayList<String>() 的区别?
- List<Map> 排序
- List<T>泛型集合根据对象的某一属性排序
- 一个简单的List<T>排序的例子
- List<T> 排序及筛选
- List<Map<String,Object>>去重,排序
- List<Map>集合根据Map里的两个key值对List集合重新排序
- List<T>的各种排序方法
- 关于List<T>和ArrayList<T>执行效率问题