java基础 Lambda作为方法的返回值

  • 开发环境 jdk1.8

传统的使用Comparator来进行排序, 从大到小的输出的写法如下,
需要使用 new Comparator来创建一个匿名的内部类来进行比较.
由于是从大到小降序,所以用o2-o1

public static void main(String[] args) {
        String[] array = {"abc", "jk", "aghjghj", "u"};

        System.out.println(Arrays.toString(array));
        // 进行一次排序  按照 长度 由 大 到 小 排序
        Arrays.sort(array, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.length() - o1.length();
            }
        });
        System.out.println(Arrays.toString(array));
    }

使用Lambda后,可以直接在 Arrays.sort方法里面,传递一个Comparator接口的实现类,该实现类就是Lambda的返回值. 代码如下

public class Demo02Comparator {
    // 函数式接口 作为返回值类型  返回的是 其实例 实现类对象
    private static Comparator<String> newComparator() {
        //return 要的是函数式接口的实例
        return (String a, String b)->{
            return b.length()-a.length();
        };
    }

    public static void main(String[] yu) {
        String[] array={"abc", "jk", "aghjghj", "u"};
        System.out.println(Arrays.toString(array));
        //排序,长度由大到小输出
        Arrays.sort(array, newComparator());
        System.out.println(Arrays.toString(array));
    }
}

控制台打印如下

其中newComparator方法可以简化如下
参数a,b去掉了String,原因是lambda的可推导即可省略特性

 private static Comparator<String> newComparator() {
        //return 要的是函数式接口的实例
        return (a, b)-> b.length()-a.length();
    }

省略写法的规则为:
1. 小括号内参数的类型可以省略;
2. 如果小括号内有且仅有一个参,则小括号可以省略;
3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

因此如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值