0、基本集合排序的方法:
java.util.Arrays.sort(o);//Arrays是类;java.util.Collections.sort(o);//Collections是类;
对Java类排序,介绍两种常用方法:
1、对所要排序的类,实现了该接口:
java.lang.Comparable
即实现了方法: 比较结果大的返回1,相等返回0,小于返回-1。
public int compareTo(T o);//定义类比较的方法;
对符合以上要求,则可以直接使用:
java.util.Arrays.sort(o);//升序排序,对集合数组有效,不可以对List使用java.util.Collections.sort(List arg0);
Eg:
public class Ar implements Comparable{ //定义所要创建的集合类,实现对应接口; int a; int b; String name; Ar(){} Ar(int a,int b,String name){ this.a=a; this.b=b; this.name=name; } public int compareTo(Ar o) { return this.name.compareTo(o.name); }}public class Join{ public static void main(String[] args) { /*Ar[] ars =new Ar[2]; ars[0]=new Ar(1,3); ars[1]=new Ar(3,1); Arrays.sort(ars); for(Ar i : ars) { System.out.println("a="+i.a+",b="+i.b); }*/ List br_list=new ArrayList(); br_list.add(new Ar(2,5,"z")); br_list.add(new Ar(2,2,"b")); Collections.sort(br_list); for(int i=0 ;i
2、使用比较器:Comparator<T>(接口){public int compare(T o1,To2){}}
在调用Arrays.sort(T o,Comparator<T> c),Collections.sort(T o,Comparator<T> c)
传递一个比较器;
Collections.sort(list, new Comparator(){ @Override public int compare(Br o1, Br o2) { return o1.c>o2.c?1:-1; //return o1.d>o2.d?1:-1; }});public class Br { int c; int d; public Br(){} public Br(int c,int d){ this.c=c; this.d=d; }}
扩展:
源码java.util.Collections类文件sort(List<T> list, Comparator<? super T> c)的代码
public staticvoid sort(List list, Comparator c) { Object[] a = list.toArray(); Arrays.sort(a, (Comparator)c); ListIterator i = list.listIterator(); for (int j=0; j
实际上Collections.sort(<T> list, <? super T> c)的实现也是将list转化成数组用Arrays.sort处理。