持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
Java8新特性---Lambda表达式
Lambda表达式Oracle官方介绍:
Lambda Expressions, a new language feature, has been introduced in this release. They enable you to treat functionality as a method argument, or code as data. Lambda expressions let you express instances of single-method interfaces (referred to as functional interfaces) more compactly.
谷歌翻译为:
Lambda 表达式是一项新的语言功能,已在此版本中引入。它们使您能够将功能视为方法参数,或将代码视为数据。借助 Lambda 表达式,您可以更紧凑地表达单方法接口(称为函数接口)的实例。
方法参考为已具有名称的方法提供易于阅读的 lambda 表达式。
Lambda表达式的作用:
可以将Lambda表达式理解为可以流动的水流,数据像水流一样传递,Lambda允许函数作为方法的参数,然后写出更灵活、更简洁的代码,使Java代码的风格显得更紧凑,表达能力变得提高。
普通写法:
Integer [] nums={1,2,3,4,5};
Arrays.sort(nums, new Comparator<Integer>(){
@Override
public int compare(Integer num1,Integer num2){
return num2-num1;
}
});
使用Lambda表达式的写法:
Arrays.sort(nums,(Integer num1,Integer num2)->{
return num2-num1;
});
可以看到Lambdab表达式只需在Java语言中引入一个“->”操作符,该操作符被称为Lambda操作符或者箭头操作符.
Lambda表达式分为两个部分:
左侧:指定了Lambda表达式需要的所有参数
右侧:指定了Lambda表达式要执行的功能
Lambda的重要特征:
可选的类型声明:不需要声明参数类型
可选的参数括号(圆括号):多参数或者无参数需定义圆括号,一个参数不需要
用
可选的返回关键词:如果只有一个返回值则不需要,大括号必须指明表达式返回的值
可选的大括号:只有一个语句时,不需要使用
Lambda的优缺点
- 优点:
- 使代码更简洁,紧凑
- 可以使用并行流来并行处理,充分利用多核CPU的优势
- 缺点:
- 非并行计算情况下,其计算速度没有比传统的 for 循环快
- 不容易被调试
- 若新手没有学过
Lambda表达式,则代码不容易看懂