JDK1.8引入Lambda表达式

Lambda表达式

1.什么是lambda表达式
lambda表达式,也可称为闭包
Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)
Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例,必须是函数式接口类型
使用Lambda表达式可以使代码变的更加简洁紧凑,简化创建匿名内部类对象
1.1优点
(1)简洁
(2)非常容易并行计算
(3)可能代表未来的编程趋势
(4)结合hashmap的computeIfAbsent方法,递归运算非常快。java有针对递归的专门优化。
1.2缺点
(1)若不用并行计算,很多时候计算速度没有比传统的for循环快。(并行计算有时需要预热才显示出效率优势,并行计算目前对Collection类型支持的好,对其他类型支持的一般)
(2)不容易调试
(3)代码不容易让其他语言的程序员看懂
(4)在lambda语句中强制类型转换貌似不方便,一定要搞清楚到底是map还是mapToDouble还是mapToInt

2.Lambda表达式的语法
(1)lambda表达式的本质是一个匿名方法,但如果有一个方法的签名(参数列表和返回值)和functional interface的 签名一样并且逻辑正好是你需要的,那么你可以使用方法引用的方式来将它赋值给你的functional interface,而无 需再编写lambda表达式.
(2) 方法引用是jdk1.8中被引入的新语法,它跟lambda表达式息息相关,从字面意思来看,方法引用指向一个方法, 但不调用它。其实这个特性在很多编程语言中都已经支持了,java也终于支持了。像其它编程语言一样,加括号就 是调用方法,不加括号就是引用方法。

(parameters) -> expression
 (parameters) ->{ statements; }

3.lambda表达式的重要特征
3.1 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值 ;
3.2 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号
接收一个参数(数字类型),返回其2倍的值 x -> 2 * x
接受2个参数(数字),并返回他们的差值 (x, y) -> x – y
3.3 可选的大括号:如果主体包含了一个语句,就不需要使用大括号 ;
3.4可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回 了一个数值。

4.基本用法
Java8新增了一个操作符->,称为lambda操作符或箭头操作符,它将lambda表达式分为两部分,箭头之前的是参 数,箭头之后的是动作。
定义函数式接口
在java中,lambda表达式一定要结合functional interface来使用,functional interface是指一个只包含一个抽象 方法的接口。

public interface MyInterface { 
int doSomething(int number);
 }
MyInterface myInterface = n -> n + 1;
 int number = myInterface.doSomething(5);

5.lambda表达式限制
(1)目标类型必须是明确的函数式接口
(2)只能为函数式接口创建对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值