java中使用Lambda表达式的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<String> stream = Stream.of(arr);
stream.forEach(x -> System.out.println(x));
输出:
a
is
java
site
creek
program
5,方法引用
利用方法引用,上面的代码也可以被写成如下形式:
Stream<String> stream = Stream.of(arr);
stream.forEach(System.out::println);
6,没有参数
当一个参数都没有的时候,仍然可以使用lambda表达式。如下:
() -> {for(int i=0; i<10; i++) doSomthing();}
原文地址: 5 Different Syntax of Lambda Expression
java中使用Lambda表达式的5种语法的更多相关文章
- Lambda 表达式,Java中应用Lambda 表达式
一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...
- Java 中的 Lambda 表达式
Lambda表达式 Lambda 表达式是 JDK1.8 的一个新特性,又称特殊的匿名内部类,可以取代大部分的匿名内部类,语法更简洁,可以写出更优雅的 Java 代码,可以极大地优化代码结构. Lam ...
- Java中的Lambda表达式简介及应用
在接触Lambda表达式.了解其作用之前,首先来看一下,不用Lambda的时候我们是怎么来做事情的. 我们的需求是,创建一个动物(Animal)的列表,里面有动物的物种名,以及这种动物是否会跳,是否会 ...
- Java中的Lambda表达式
Lambda来源于希腊字母入,发音为 /'læmdə/对高数有所了解的人都知道λ用于声明一个数学逻辑系统,表示根据XX的输入参数,会返回某个Y结果.这正是编程语言中函数(方法)的意思.因此Lambd ...
- java中使用lambda表达式
使用lambda表达式能够使复杂的编写方式变的简单 lambda表达式的语法 (parameters) -> expression 或 (parameters) ->{ statement ...
- 理解和运用Java中的Lambda
前提 回想一下,JDK8是2014年发布正式版的,到现在为(2020-02-08)止已经过去了5年多.JDK8引入的两个比较强大的新特性是Lambda表达式(下文的Lambda特指JDK提供的Lamb ...
- Java中的lambda匿名函数使用
Java中的lambda匿名函数使用 lambda匿名函数的使用是为了满足某些情况下需要临时定义函数,或者事先定义,需要时才使用.在python里面,lambda表达式的表达方式为:lambda 参数 ...
- 【C++】C++中的lambda表达式和函数对象
目录结构: contents structure [-] lambda表达式 lambda c++14新特性 lambda捕捉表达式 泛型lambda表达式 函数对象 函数适配器 绑定器(binder ...
- Java语言与JVM中的Lambda表达式全解
Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...
随机推荐
- vs开发nodejs系列之 修改新建js文件的模板
文件位置 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft ...
- webuploader 多图片上传
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件. 具体接口参考 webuploader接口文档地址 一.图片上传功能 ...
- Java中的哈夫曼树
package com.ietree.basic.datastructure.tree; import java.util.ArrayDeque; import java.util.ArrayList ...
- 不受路径限制的 HALCON开发环境, 并且初始化两个Picture控件;
知识储备: http://bbs.csdn.net/topics/391829463 关于 添加第三方库的方式 http://www.ihalcon.com/read-3730.html VS ...
- 『NiFi 学习之路』自定义 —— 组件的自定义及使用
一.概述 许多业务仅仅使用官方提供的组件不能够满足性能上的需求,往往要通过高度可定制的组件来完成特定的业务需求. 而 NiFi 提供了自定义组件的这种方式. 二.自定义 Processor 占坑待续 ...
- ansible playbook基本操作
一.ansible playbook简单使用 相当于是把模块写入到配置文件里面 vim /etc/ansible/test.yml //写入如下内容: --- - hosts: 127.0.0.1 r ...
- linux系统上使用unzip命令
最近在本地使用maven打包工程后,将工程部署到linux服务器的tomcat上,使用unzip解压工程报--->未找到命令.即该命名文件未安装,需要安装一下.安装命令如下: yum insta ...
- kivy sdl2 - ImportError: DLL load failed: 找不到指定的模块
from kivy.app import App from kivy.uix.button import Button class TestApp(App): def build(self): ret ...
- cordova linux 安装并编出第一个demo-android
cordova可以做到一次编写到处运行各个平台(android.ios.wp.bb.firefoxos.web等几乎所有平台) 手上只有一个android手机 ,安装的时候没有那么顺利,第一大问题就是 ...
- ARTS Week 002
Algorithm Leetcode 2. Add Two Numbers You are given two non-empty linked lists representing two non- ...