JAVA lambda表达式

函数式编程思想:只要能获取到结果,不关注怎么做

由匿名内部类简化而来

(参数列表)-> {一些重写方法的代码 } 中间的箭头表示将前面的参数传递给后面的代码

  • ():接口中抽象方法的参数列表,没有参数就空着
  • ->:中间的箭头表示将前面的参数传递给后面的代码
  • { } : 重写接口的抽象方法体
  1. 无参数返回值
public interface Cook {
    // 无参数无返回值的方法makeFood
    public abstract void makeFood();
}
==================================================
public class DemoLamda {
    public static void main(String[] args) {
        // 调用invokeCook方法,参数是接口,可以传递匿名内部类
        invokeCook(new Cook(){
            @Override
            public void makeFood() {
                System.out.println("吃饭了");
            }
        });
        // 使用Lambda标准格式(无参数返回),简化匿名内部类
        invokeCook(()->{
            System.out.println("吃饭了");
        });
        // 优化省略
          invokeCook(()->System.out.println("吃饭了"));
    }
    // 定义一个方法,参数为Cook接口,内部调用Cook的方法
    public static void invokeCook(Cook cook){
        cook.makeFood();
    }
}
  1. 有参数与返回值
import java.util.Arrays;
import java.util.Comparator;

public class Demolambda01 {
    public static void main(String[] args) {
        Person[] arr = {
                new Person("wudide1", 25),
                new Person("wudide2", 324),
                new Person("wudide3", 35),
        };
        // 对数字进行排序,传递一个比较器
//        Arrays.sort(arr, new Comparator<Person>() {
//            @Override
//            public int compare(Person o1, Person o2) {
//                return o1.getAge()-o2.getAge();
//            }
//        });
        // 使用Lambda表达式,简化匿名内部类
        Arrays.sort(arr,(Person o1,Person o2)->{
            return o1.getAge()-o2.getAge();
        });
        // 省略格式
        Arrays.sort(arr,(o1,o2)->o1.getAge()-o2.getAge());
        for (Person p : arr) {
            System.out.println(p);
        }
    }
}
  1. 更加精简

    凡是可以根据上下文推导出的内容,可以省略

    可以省略的内容:

    • 括号中参数列表的数据类型,可以省略
    • 括号中的参数,如果只有一个,类型和括号都可以省略
    • 如果大括号的代码只有一行,无论是否有返回值,都可以省略 :{ } return 分号 (必须三个一起省略)
  2. Lambda使用前提:

    使用Lambda必须具有接口,且要求接口有且仅有一个抽象方法(函数式接口)

    必须就有上下文推断

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值