2023/2/9 lambda表达式

文章介绍了如何使用Java的lambda表达式来简化匿名内部类的代码,特别是在重写Arrays排序方法时。通过比较传统匿名内部类和使用lambda的代码示例,展示了lambda如何减少冗余,提高代码可读性。lambda表达式适用于函数式接口,允许省略new、类名、方法名和部分括号、return关键字,使得代码更紧凑。
摘要由CSDN通过智能技术生成

lambda表达式用于简化匿名内部类的代码

1 代码示例
1.1 如果我们没有使用lambda表达式,直接书写匿名内部类将十分复杂,比如以下代码使用匿名内部类重写了Arrays中的排序方法(默认为从小到大顺序快速排序)
改写该方法,数据必须为引用类型,所以使用了泛型Integer
public class A01_MyArraysDemo2 {
    public static void main(String[] args) {
        //非默认方法排序,需要引用类型的数据
        Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
        //o1表示无序队列元素,o2表示有序队列元素
        //返回值如果为正数或者0,表示当前要插入无序元素放在后面,反之则放在前面
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println(Arrays.toString(arr));
    }
}
1.2 使用了lambda表达式改写
1.2.1 使用条件:必须为函数式接口(有且仅有一个抽象方法的接口)
1.2.2 省略了很多内容,这些内容也并不是可以随便省略的,规则如下
1 new,类名,方法名,参数类型可以省略
2 如果只有一个参数,参数的小括号也可以省略
3 如果大括号里面的内容只有一行,那么return,大括号,分号也可以省略
public class A01_LambdaDemo1 {
    public static void main(String[] args) {
        String[] arr = {"a", "aaaa", "aaa", "aa"};
        Arrays.sort(arr, (o1, o2) -> o1.length() - o2.length());
        System.out.println(Arrays.toString(arr));
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值