java排序方法详解

mac2022-06-30  28

java排序方法详解

用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


二、对String型数组排序的方法

从小到大默认排序与上方排序方法相同。但进行重写方法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); } }

四、匿名类写法

import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Integer[] p = new Integer[n]; for(int i = 0; i < n; i++) { p[i] = sc.nextInt(); } //匿名类,代码更简洁 Comparator<Integer> cmp = new Comparator<Integer>() { public int compare(Integer a, Integer b) { return b-a; } }; Arrays.sort(p,cmp); for(int i = 0; i < n; i++) { System.out.println(p[i]); } } }
最新回复(0)