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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM