sort(T[] a, Comparator<? supre T> c)
Comparator是一个比较器,用来比较T[] 的元素,可以比较多维数组,O1和O2比较,compare的返回值如果大于0,就把O1放到后面,否则放在前面,这个方法可以对整个数组排序。
public class ArraysSort { public static void main(String[] args) { int[][] nums=new int[][]{{1,3},{4,5},{1,2},{3,7}}; //方法一 Arrays.sort(nums,new Comparator<int[]>(){ @Override public int compare(int[] a,int[] b){ if(a[0]==b[0]){ return a[1]-b[1]; }else{ return a[0]-b[0]; } } }); // 方法二,使用匿名表达式 // (a,b)->a[1]-b[1]会自动转变成上面的形式 /*Arrays.sort(nums,(a,b)->a[1]-b[1]);*/ for (int[] num : nums) { System.out.println(Arrays.toString(num)); } } }
lambda->相当于匿名方法,它的作用是可以不显式new一个对象并写方法,只用写方法里的逻辑
//只用关心具体的方法逻辑
Arrays.sort(numsArr, (x, y) -> { long sx = 10, sy = 10; while (sx <= x) { sx *= 10; } while (sy <= y) { sy *= 10; } return (int) (-sy * x - y + sx * y + x); });