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