Lambda 表达式的5种不同语法
来源:互联网 发布:我的知颜母亲大学写生 编辑:程序博客网 时间:2024/05/17 04:02
原文:https://www.programcreek.com/2014/01/5-different-syntax-of-lambda-expression/
1、标准语法
思考下面这个例子:
String[] arr = {"program", "creek", "is", "a", "java", "site"};Arrays.sort(arr, (String m, String n) -> Integer.compare(m.length(), n.length()));System.out.println(Arrays.toString(arr));
一个lambda表达式的标准语法由以下几部分组成:
1. 由逗号分隔的参数列表在圆括号内。在这个例子中,它是(String m, String n)
2. 箭头标记->
3. 主体由一个单独的表达式或一个语句块。在这个例子中,它是一个单独的表达式Integer.compare(m.length(), n.length())
Output:[a, is, java, site, creek, program]
2、参数类型能够被推断
如果一个参数的参数类型能够从上下文中被推断出来,则这个参数类型将被忽略。
在前面的代码中,参数m和n的类型能够被推断为字符串,所以这参数类型能够被忽略。这使代码更干净并且更像一个真实的lambda表达式。
String[] arr = { "program", "creek", "is", "a", "java", "site" };Arrays.sort(arr, (m, n) -> Integer.compare(m.length(), n.length()));System.out.println(Arrays.toString(arr));
3、多行代码在lambda表达式中
如果代码不能被写在一行中,它能够被放在{}
中。在这种情况下代码应该明确包含一个return
语句。
String[] arr = { "program", "creek", "is", "a", "java", "site" };Arrays.sort(arr, (String m, String n) -> { if (m.length() > n.length()) return -1; else return 0;});System.out.println(Arrays.toString(arr));
Output:[program, creek, java, site, is, a]
4、单个能够被推断类型的参数
当参数类型能够被推断的情况下,单个参数的的lambda表达式可以省略圆括号。
String[] arr = { "program", "creek", "is", "a", "java", "site" };Stream<String> stream = Stream.of(arr);stream.forEach(x -> System.out.println(x));
Output:aisjavasitecreekprogram
5、无参数
当一个函数没有参数时,我们也能写成lambda表达式。关于例子,它能够看起来像下面这样:
() -> {for(int I=0; I<10; I++) doSomething();}
6、方法引用
4中的代码利用方法引用也能写成下面的样子:
Stream<String> stream = Stream.of(arr);stream.forEach(System.out::println);
阅读全文
0 0
- Lambda 表达式的5种不同语法
- Lambda表达式的基础语法
- Java8的学习计划--lambda表达式的语法
- Lambda表达式语法
- Java8: Lambda表达式语法
- java8 lambda表达式-语法
- Lambda 表达式语法
- lambda表达式:语法
- Lambda 表达式语法
- lambda表达式语法
- C++ AMP: Lambda表达式语法
- java8之lambda表达式语法
- Lambda表达式和linq普通语法的一些对比
- jdk8 lambda表达式语法(->) 和jdk7的比较
- C++ 语法实验室之强大的lambda表达式
- 初看Java8新特性-Lambda表达式的语法规则
- 超级全面的Linq语法、SQL语法、lambda表达式对照(相同功能的不同于法)
- Java8 Lambda表达式不同表示形式
- 学习笔记(三)HttpServlet中路径配置相关
- iOS开发 手动打造经典轮播图教程
- 高可用MySQL(第2版).pdf 免费下载
- win服务器下部署php项目磁盘被占满-原因: xdebug模块日志记录
- Java核心技术 卷1 基础知识 原书第9版.pdf 免费下载
- Lambda 表达式的5种不同语法
- 深度优先遍历和广度优先遍历
- Spring Boot实战 ,丁雪丰 (译者) .pdf 免费下载
- leetcode: 729. My Calendar I,731. My Calendar II
- page页面跳转到子页面和category页面跳转到子页面有区别:
- Effective Java中文版(第2版).pdf 免费下载
- hash初步学习
- 常用css 属性
- 171114 逆向-以CM为例学习MFC机制