博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中使用Lambda表达式的5种语法
阅读量:6008 次
发布时间:2019-06-20

本文共 1592 字,大约阅读时间需要 5 分钟。

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表达式的标准写法由下面几点构成:

  • 以逗号分隔,以()关闭的形参:(Dog m, Dog n)
  • 箭头标记:->
  • 主体部分则是一个单表达式或者声明代码块。如下是单表达式形式:Integer.compare(m.getWeight(), n.getWeight())

输出:

[a, is, java, site, creek, program]

2,参数类型可以推断

如果参数的类型可以根据上下文推断出来,则可以省略掉类型。

在上面的代码中,参数 m 与 参数 n 可以推测出来是String类型,所以可以省略。这样会让代码变得更加简洁,并且也更像是一个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,存在多行代码

如果sort() 里面的代码一行写不下的话,可以多行,但需要{} 括起来。而且代码应该有明确的返回语句。

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));

输出:

[program, creek, java, site, is, a]

4,单个参数并可推断类型

Parenthesis can be omitted for single parameter lambda expression when types can be inferred.

单个参数的lambda表达式,在参数类型可以推断出来的时候,可以省略参数 “x” 的括号。

String[] arr = { "program", "creek", "is", "a", "java", "site" };Stream
stream = Stream.of(arr);stream.forEach(x -> System.out.println(x));

输出:

aisjavasitecreekprogram

5,方法引用

利用方法引用,上面的代码也可以被写成如下形式:

Stream
stream = Stream.of(arr);stream.forEach(System.out::println);

6,没有参数

当一个参数都没有的时候,仍然可以使用lambda表达式。如下:

() -> {for(int i=0; i<10; i++) doSomthing();}
***

原文地址:

转载于:https://www.cnblogs.com/kangkaii/p/8419082.html

你可能感兴趣的文章
梦想的脚步---C语言的学习与成长
查看>>
ubuntu 16.04 安装 Git SVN 图形化客户端 RabbitVCS
查看>>
谷歌Chrome开展实验,解决HTTPS混合内容错误
查看>>
全球.COM域名注册量统计:2月增超29万域名
查看>>
11月微博博客日均覆盖数TOP10:网易博客升至第七
查看>>
6月28日全球域名注册商(国际域名)保有量及市场份额
查看>>
9月第4周全球域名商(国际域名)新增注册量TOP15
查看>>
微软Silverlight 5开发书籍汇总
查看>>
Android热修复升级探索——代码修复冷启动方案
查看>>
我的友情链接
查看>>
如何提高阿里云上应用的可用性(一)
查看>>
如何更高效的管理原生微服务应用
查看>>
浮点数
查看>>
219. Contains Duplicate II - LeetCode
查看>>
MySQL数据库安装及配置相关
查看>>
小U盘大用处
查看>>
今天发现大量TIME_WAIT
查看>>
基于搜狗微信的爬虫知识总结
查看>>
计算方法(三)矩阵分解1-正交分解(QR分解)
查看>>
关于vsftpd下显示的修改时间与系统时间不一致的解决方法
查看>>