Arrays.sort()和lambda表达式->

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); });

 

posted @ 2021-04-12 16:53  shaon111  阅读(2013)  评论(0)    收藏  举报