lambda表达式
来源:互联网 发布:淘宝帮派帮规怎么写 编辑:程序博客网 时间:2024/06/07 09:22
用途
用于传递代码块,在没有lambda表达式的时候,传递代码块必须通过构造对象传递。
形式
参数,箭头,以及一个表达式
如果代码要完成计算其无法通过一个表达式完成,则需要加入{}
如果lambda表达式没有参数,但是其必须依旧提供(),就像是无参数方法
如果lambda表达式参数的类型可以推导出来,则可以省略参数类型
如果只有一个参数,且参数类型可以推导出来,则可以省略括号
(String first, String second) -> { if(first.length() < second.length) return -1; else if(first.length > second.length) return 1; else return 0; }//无参数表达式()->{ for(int i = 0; i < 10; i++) System.out.println(i);}
Lambda表达式的用途
用于替代函数式接口,这种接口中只有一种方法
- 替代Comparator
public class LambdaTest { public static void main(String[] args) { String[] planents = new String[] {"Merry", "Venus", "Earth", "Mars", "Jupter", "Saturn"}; System.out.println(Arrays.toString(planents)); System.out.println("Sorted:"); Arrays.sort(planents); System.out.println(Arrays.toString(planents)); System.out.println("Sorted By Length:"); String second; String first; Arrays.sort(planents, (first, second)->first.length()-second.length());//函数式接口可以使用lambda表达式代替 System.out.println(Arrays.toString(planents)); }}
方法引用
有时候,现有的的方法可以完成想要传递到其他代码的某个动作,此时可以直接将方法传递过去。
格式:类名::方法名
变量作用域
lambda表达式的组成:
一个代码块
参数
自由变量的值,指的是非参数,且不再代码块中定义的值。lanbda表达式变量引用的问题
只能引用变量不会改变的值的变量
lambda表达式的变量的作用域的范围和嵌套体有相同的作用域,所以不能有同名变量。
在lambda表达式中使用this关键字,这个this指的是创建这个lambda表达式的this参数。
处理lambda表达式
要接收一个lambda表达式需要一个函数式接口
repeat(10, ()->System.out.printin("Hello World")); public static void repeat(int n, Runnable action){ for(int i=0; i < 10; i++){ action.run(); } }
阅读全文
0 0
- Lambda Expressions(Lambda表达式)
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- lambda表达式
- lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- Lambda表达式
- Lambda 表达式
- Lambda 表达式
- Lambda表达式
- Lambda表达式
- Lambda 表达式
- 4、不一样的C++系列--函数的默认参数和占位参数
- checkbox状态改变事件
- C++中的临时变量
- matlab ginput详解
- idea maven默认设置
- lambda表达式
- RPM, SRPM, YUM 软件安装
- jQuery<4.2>
- iOS 资源大全
- 【C++】简述基类和派生类中数据成员间的关系
- code style
- CSS定位
- 第三方支付接口有哪些?怎么申请?
- Linux内核查找文件操作函数的过程