出自:https://blog.csdn.net/tuolaji8/article/details/48418711
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>