一、一维数组比较
1、默认升序
首先对于sort()函数来说默认是升序的
import java.util.Arrays;public class helloworld {public static void main(String[] args) {int[] arr={1,4,3,6,7,9};Arrays.sort(arr);System.out.println(Arrays.toString(arr));}
}
2、区间排序sort(T[] a,int formIndex, int toIndex)
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {Integer[] arr2={1,4,3,8,2,9,11,3};Arrays.sort(arr2,2,5);System.out.println(Arrays.toString(arr2));}
}
3、降序
如果想要降序,Arrays.sort(scores,Collections.reverseOrder());。
首先要注意的是不能用int这个类型了,要用Integer,不能使用基本类型(int,double, char),如果是int型需要改成Integer,float要改成Float
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {Integer[] arr2={1,4,3,6,7,9,11};Arrays.sort(arr2, Collections.reverseOrder());System.out.println(Arrays.toString(arr2));}
}
4、重载比较器进行降序
也可以重载比较器,自定义比较
import java.util.Arrays;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {Integer[] arr2={1,4,3,6,7,9};Arrays.sort(arr2, new Comparator<Integer>() {public int compare(Integer o1, Integer o2) {return o2-o1;}});System.out.println(Arrays.toString(arr2));}
}
二维数组比较
1、按照第一元素比较
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};Arrays.sort(a1, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[0]-o2[0];}});System.out.println("按照第一元素比较 第一种方法");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a1[i]));}Arrays.sort(a2,(a, b)->(a[0]-b[0]));System.out.println("按照第一元素比较 第二种方法");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a2[i]));}}
}
若想第一元素相等,按第二元素比较
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};Arrays.sort(a1, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {if(o1[0]==o2[0]){return o1[1]-o2[1];}return o1[0]-o2[0];}});System.out.println("按照第一元素比较 也可以比较第二元素 第一种方法");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a1[i]));}// Arrays.sort(a2,(a, b)->(a[0]-b[0]));
// System.out.println("按照第一元素比较 第二种方法");
// for (int i = 0; i < a1.length; i++) {
// System.out.println(Arrays.toString(a2[i]));
// }}
}
2、按照第二元素比较
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};Arrays.sort(a1, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[1]-o2[1];}});System.out.println("按照第二元素比较 第一种方法");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a1[i]));}Arrays.sort(a2,(a, b)->(a[1]-b[1]));System.out.println("按照第二元素比较 第二种方法");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a2[i]));}}
}
3、二维数组降序排序
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;public class helloworld {public static void main(String[] args) {int[][] a1=new int[][]{{1,3},{1,2},{4,5},{3,7}};int[][] a2=new int[][]{{1,3},{1,2},{4,5},{3,7}};Arrays.sort(a1, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o2[0]-o1[0];}});System.out.println("按照第一元素比较 第一种方法 降序");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a1[i]));}Arrays.sort(a2,(a, b)->(b[0]-a[0]));System.out.println("按照第一元素比较 第二种方法 降序");for (int i = 0; i < a1.length; i++) {System.out.println(Arrays.toString(a2[i]));}}
}
总结
对于Arrays.sort(),可以进行重载比较器来自定义比较,可以升序排序也可以降序排序
在重载或者Arrays.sort(a2,(a, b)->(b[0]-a[0]));中
我们观察(a,b),若a-b或者比较器里面return a-b,则是升序排序
若b-a或者比较器里面return b-a,则是降序排序。