Java Lambda 表达式讲解
Lambda 表达式
Lambda 表达式的基础语法
Java8 中引入了一个新的操作符:->
该操作符称为箭头操作符或者 Lambda 操作符
Lambda 操作符将表达式拆分成两部分:
- 左侧:Lambda 表达式的参数列表
- 右侧: Lambda 表达式的"函数体" --> Lambda 体
语法格式 1:无参数,无返回值,且 Lambda 体中只有一条语句
() -> lambda 体
代码示例:
// 使用匿名内部类的方式
Runnable run = new Runnable() {@Overridepublic void run() {System.out.println("Hello world!");}
}
r.run();System.out.println("---------------------")// 使用 Lambda 的方式
Runnable runa = () -> System.out.println("Hello runnable!");
runa.run();
语法格式 2:有一个参数,无返回值,且 Lambda 体中只有一条语句
(x) -> Lambda 体
代码示例:
Consumer<String> consumer = (str) -> System.out.println(str);
consumer.accept("Hello world!");
语法格式 3:如果只有一个参数,无返回值,且 Lambda 体中只有一条语句,小括号可以省略不写
x -> Lambda 体
代码示例:
Consumer<String> consumer = str -> System.out.println(str);
consumer.accept("Hello world!");
语法格式 4:如果有两个及以上的参数,有返回值,且 Lambda 体中有多条语句
(x, y) -> { 表达式 1; 表达式 2; ...; return y - x; }
代码示例:
Comparator<Integer> comparator = (x, y) -> {System.out.println("x = " + x);System.out.println("y = " + y);return y - x;
}
语法格式 5:如果有两个及以上的参数,但是 Lambda 体中只有返回值一条语句,则 return 和 {} 都可以不写
(x, y) -> y - x
代码示例:
Comparator<Integer> comparator = (x, y) -> y - x;
语法格式 6: Lambda 表达式的参数列表的数据类型可以省略不写,因为 JVM 编译器会通过上下文进行推断,即“类型推断”
Lambda 表达式需要“函数式”接口的支持
函数式接口:接口中只有一个抽象方法的接口,称为函数式接口,可以使用 @FunctionalInterface 注解来进行标注
Java8 内置的四大核心函数式接口
Consumer :消费型接口 --> 一般用于消费传入的数据
void accept(T t);
Supplier : 供给型接口 --> 一般用于提供数据
T get();
Function<T, R> : 函数型接口 --> 一般用于对传入的数据进行处理,并返回处理后的结果
R apply(T t);
Predicate : 断言型接口 --> 一般用于判断传入的数据是否符合条件
boolean test(T t);
Java Lambda 表达式讲解相关推荐
- 深入理解Java Lambda表达式,匿名函数,闭包
前言 对于Lambda表达式一直是知其然不知其所以然,为了搞清楚什么是Lambda表达式,以及Lambda表达式的用法和作用,本文应运而生当做学习笔记分享出来,欢迎指正交流. 什么是Lambda 让我 ...
- Java Lambda表达式入门
本文转自:http://blog.csdn.net/renfufei... 转载请注明出处 原文链接: Start Using Java Lambda Expressions 下载示例程序 Examp ...
- java拉姆达表达式事例,Java Lambda表达式详解和实例
简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体( ...
- Java Lambda表达式forEach无法跳出循环的解决思路
Java Lambda表达式forEach无法跳出循环的解决思路 如果你使用过forEach方法来遍历集合,你会发现在lambda表达式中的return并不会终止循环,这是由于lambda的底层实现导 ...
- Java Lambda表达式初探
前言 本文受启发于Trisha Gee在JavaOne 2016的主题演讲Refactoring to Java 8. Java 8已经发行两年多,但很多人仍然在使用JDK7.对企业来说,技术上谨慎未 ...
- Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记
Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记 根据 JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭包或者匿名函数. ...
- java lambda 表达式中的双冒号和箭头的用法 ::
先构造一些数据,创建一个User类 java lambda 表达式中的双冒号的用法 :: 双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 如下图所示 User是一个类, ...
- Lambda表达式的生动理解以及Java Lambda表达式常见使用场景
本篇承接上一篇 Java Lambda 表达式快速学习 , 对Lambda 表达式的语法格式进行演化说明, 并对Java 中Lambda表达式的常见使用场景进行说明. Lambda 表达式怎么来的? ...
- Java Lambda 表达式快速学习
Lambda 表达式来源于数学, 因为其简洁性,很多开发语言都支持, Java 在版本8 开始引入. Lamba 表达式是什么? 匿名内部类 接口只能有一个需要被实现的方法 Lamba 表达式作用 代 ...
最新文章
- Mysql中where条件一个单引号引发的性能损耗
- [阿里云Java Web环境搭建]二、Ubuntu安装JDK
- 数十种TensorFlow实现案例汇集:代码+笔记
- jupyter lab插件无法打开,且报错Error: 500 (Internal Server Error)
- 下载centos(阿里云)
- [洛谷P3919]【模板】可持久化数组
- IDEA安装mysql程序包,程序包的下载!以及程序包配置到项目详解(更适合英语小白)
- 海康VisionMaster算法平台介绍
- 稳健Capon波束形成
- [ROS2 基础] 仿真系统和搭建方法
- Linux NTP服务器配置
- html5富文本编辑器菜鸟手册,富文本编辑器froalaEditor(全面)附教程
- 加域电脑,如何脱域上网下载安装其他工具软件
- xp系统怎么添加wifi连接服务器,XP系统怎么连接无线路由器
- 串口服务器与协议转换器的区别,串口服务器和串口转以太网模块区别
- 在【此电脑】隐藏【设备和驱动器】中不需要的图标
- Python免费下载哔哩哔哩视频,只需一行代码!
- 浅谈《守望先锋》中的 ECS 构架
- 根域名服务器的一点理解
- 转黄老师的“告别信狮”书
热门文章
- getprivateprofilestring读不到数据_Tomcat NIO(11)请求数据读取
- Java FilterInputStream skip()方法与示例
- python里x.pow2_带有Python示例的math.pow()方法
- 为什么ConcurrentHashMap不允许插入null值?
- 列表使用与内部实现原理
- 经典面试题|讲一讲JVM的组成
- nodejs+nginx获取真实ip
- c语言指针灵活性管窥
- Linux debian安装Typora教程
- CentOS 7 搭建RAP2r Api文档管理系统