Lambda 函数式编程

18 篇文章 0 订阅
6 篇文章 0 订阅

先看一张图直观的了解一下lambda表达式
在这里插入图片描述
Lambda表达式的语法:

([Lambda参数列表,即形参列表]) -> {Lambda体,即方法体}
使用 "->"将参数和实现逻辑分离;( ) 中的部分是需要传入Lambda体中的参数;{ } 中部分,接收来自 ( ) 中的参数,完成一定的功能。

赋值:
lambda表达式的结果赋值的时候,可以赋给谁?只能赋给函数式接口

@FunctionalInterface
interface result = map.forEach((k,v) -> System.out.print(k + ":" + v + "\t\t"));

函数式接口能够接受匿名内部类的实例化对象,换句话说,我们可以使用匿名内部类来实例化函数式接口的对象,而Lambda表达式能够代替内部类实现代码的进一步简化,因此,Lambda表达式和函数式接口紧密的联系到了一起,接下来的这句话非常的重要:

每一个Lambda表达式能隐式的给函数式接口赋值

类名::实例方法
对象::实例方法
类名::静态方法

		//TreeSet<String> set = new TreeSet<>((s1,s2) -> s1.compareTo(s2));
		//类名::实例方法
        TreeSet<String> set = new TreeSet<>(String::compareTo);
        set.add("Hello");
        set.add("isea_you");
       // set.forEach(t -> System.out.println(t));//Hello \n isea_you
       //(1)对象::实例方法,Lambda表达式的(形参列表)与实例方法的(实参列表)类型,个数是对应
        set.forEach(System.out::println);
		
		//Stream<Double> stream = Stream.generate(() -> Math.random()
		// 类名::静态方法, Lambda表达式的(形参列表)与实例方法的(实参列表)类型,个数是对应
        Stream<Double> stream = Stream.generate(Math::random);
        stream.forEach(System.out::println);

参考:https://www.zhihu.com/question/20125256
https://zhuanlan.zhihu.com/p/365505945

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值