java中使用sort()对ArrayList进行排序
2015-09-13 19:53
591 查看
java中的ArrayList需要通过collections类的sort方法来进行排序如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数举个例子:
package book.arrayset; import java.util.Comparator; /** * 整数比较器,将整数按降序排列 */ class MyIntComparator implements Comparator{ /** * o1比o2大,返回-1;o1比o2小,返回1。 */ public int compare(Object o1, Object o2) { int i1 = ((Integer)o1).intValue(); int i2 = ((Integer)o2).intValue(); if (i1 < i2){ return 1; } if (i1 > i2){ return -1; } return 0; } } //上面的为比较的函数实现,下面真正的添加数据, //通过调用上面的比较函数实现自定义排序的功能 package book.arrayset; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 对List中的元素排序 */ public class SortList { public static void output(List list){ if (list == null){ return; } for (int i=0; i<list.size(); i++){ System.out.print(list.get(i).toString() + " "); } System.out.println(); } public static void main(String[] args) { List list = new ArrayList(); list.add(new Integer(5)); list.add(new Integer(8)); list.add(new Integer(1)); list.add(new Integer(3)); list.add(new Integer(2)); list.add(new Double(3.1));
<span style="font-family: Arial, Helvetica, sans-serif;">System.out.println("list开始状态");</span>
SortList.output(list);
//Collections.sort <span style="color:#ff0000;">用默认比较器排列list的元素</span> Collections.sort(list); System.out.println("list被默认比较器排序后的状态"); SortList.output(list);
//用自定义方法按降序排列</span> Collections.sort(list, new MyIntComparator()); System.out.println("list被自定义比较器排序后的状态"); SortList.output(list); } }
因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。然后采用Collections.sort(list, comparator);方法对容器进行排序。</span>
相关文章推荐
- java.rmi.ConnectException: Connection refused to host: 127.0.0.1
- JavaNIO:非阻塞NIO通信及相关对象讲解
- 【MyEclipse】MyEclipse使用总结——MyEclipse10安装SVN插件
- Strurts2下导入Excel文件数据
- 学习JAVA,从认识关键字开始
- java基础知识
- 1.5 Eclipse集成开发环境
- java代码
- 兔子--Spring基金会
- spring学习笔记(点滴记录)
- java学习:处理逻辑的抽象,processor
- java学习:Iterator数据加工厂
- Struts2学习笔记(十):Strut2表单标签详解
- 软考--J2SE
- java学习:用Map替代众多的if-else
- 我的java实验
- Java记录 -30- 包装类
- Java线程池使用说明
- java集合框架之java HashMap代码解析
- Java中HashMap实现原理初探