用Arrays.sort方法进行排序
1、Arrays.sort(int a[]) 只能对数组从小到大排序。
import java.util.Arrays; public class p1{ public static void main(String[] args) { Integer a[]={5,8,9,7,12,3,36,24,15}; Arrays.sort(a); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }运行结果:3 5 7 8 9 12 15 24 36
2、利用Collections.reverseOrder()方法对数组从大到小排序。
import java.util.Arrays; import java.util.Collections; public class p1{ public static void main(String[] args) { Integer a[]={5,8,9,7,12,3,36,24,15}; Arrays.sort(a,Collections.reverseOrder()); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }运行结果:36 24 15 12 9 8 7 5 3
注意:数组变量需要用Integer包装类。
3、对compare方法进行重写
import java.util.*; class MyComparator implements Comparator<Integer>{ public int compare(Integer a,Integer b) { return b-a; //b-a从大到小 //a-b从小到大 } } public class p1{ public static void main(String[] args) { Integer a[]= {9,5,63,52,14,7,5,3,12}; MyComparator cmp=new MyComparator(); Arrays.sort(a,cmp); for(Integer p:a) System.out.print(p+" "); } }运行结果:63 52 14 12 9 7 5 5 3
从小到大默认排序与上方排序方法相同。但进行重写方法compare时需要把返回值改成b.compareTo(a),因为此方法返回值为int型。 代码如下
import java.util.*; class MyComparator implements Comparator<String>{ public int compare(String a,String b) { return b.compareTo(a); } } public class p1{ public static void main(String[] args) { String a[]= {"aa","ba","np"}; MyComparator cmp=new MyComparator(); Arrays.sort(a,cmp); for(String p:a) System.out.print(p+" "); } }运行结果:np ba aa
对结构体进行排序,并重写compare方法
import java.util.*; class P{ int x; int y; } class MyComparator implements Comparator<P>{ public int compare(P a,P b) { if(a.x-b.x!=0) return b.x-a.x; else return b.y-a.y; } } public class p1{ public static void main(String[] args) { Scanner s=new Scanner(System.in); int n=s.nextInt(); P a[]=new P[n]; for(int i=0;i<n;i++) { a[i]=new P(); a[i].x=s.nextInt(); a[i].y=s.nextInt(); } MyComparator cmp=new MyComparator(); Arrays.sort(a,cmp); System.out.println(a[1].x+" "+a[1].y); } }