JDK8新特性--經常使用函數接口--函數式接口做爲返回值的參數案例

package com.itheima.demo03.LambdaTest;java

import java.util.Arrays;
import java.util.Comparator;數組

/*ide

若是一個方法的返回值類型是一個函數式接口,那麼就能夠直接返回一個Lambda表達式。
當須要經過一個方法來獲取一個java.util.Comparator接口類型的對象做爲排序器時,就能夠調該方法獲取。

*/
public class Demo02Comparator {函數

//定義一個方法,方法的返回值類型使用函數式接口Comparator
public static Comparator<String> getComparator(){
    //方法的返回值類型是一個接口,那麼咱們能夠返回這個接口的匿名內部類
    /*return new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            //按照字符串的降序排序
            return o2.length()-o1.length();
        }
    };*/

    //方法的返回值類型是一個函數式接口,全部咱們能夠返回一個Lambda表達式
    /*return (String o1, String o2)->{
        //按照字符串的降序排序
        return o2.length()-o1.length();
    };*/

    //繼續優化Lambda表達式
    return (o1, o2)->o2.length()-o1.length();
}

public static void main(String[] args) {
    //建立一個字符串數組
    String[] arr = {"aaa","b","cccccc","dddddddddddd"};
    //輸出排序前的數組
    System.out.println(Arrays.toString(arr));//[aaa, b, cccccc, dddddddddddd]
    //調用Arrays中的sort方法,對字符串數組進行排序
    Arrays.sort(arr,getComparator());
    //輸出排序後的數組
    System.out.println(Arrays.toString(arr));//[dddddddddddd, cccccc, aaa, b]
}

}優化

相關文章
相關標籤/搜索