如何理解lambda
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要讲解了"如何理解lambda",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解lambda"吧!lambda语法类型为接口,有且只有一
千家信息网最后更新 2025年01月16日如何理解lambda
这篇文章主要讲解了"如何理解lambda",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解lambda"吧!
lambda语法
类型为接口,有且只有一个需要实现的方法,就可以使用一个表达式作为该接口的实现
看懂lambda
java lambda有能力表达一个完整的方法签名(带返回值),但在开发中总是写全lambda并不能达到简化代码的效果,因此开发中我们更愿意使用lambda简化后的写法。
package com.karmic.lambda;import java.util.function.Function;import java.util.function.Supplier;/** * @author karmic */public class LambdaDemo { public static void main(String[] args) { //lambda完全体 Functionf0 = (Function ) (String s) -> { return Integer.parseInt(s); }; //只有一行省略 {} 和 return Function f1 = (Function ) (String s) -> Integer.parseInt(s); //简化返回类型 Function f2 = (String s) -> Integer.parseInt(s); //简化入参类型 Function f3 = (s) -> Integer.parseInt(s); //单入参省略入参() Function f4 = s -> Integer.parseInt(s); //表达式调用的方法 签名和返回值与接口一致时 使用::简化表达式 Function f5 = Integer::parseInt; //类::静态方法 或 对象::对象方法 可以转换成签名相同的方法 Supplier a1 = DemoBean::getA; Supplier a2 = new DemoBean()::getB; //类::对象方法 可以转换成签名第一个入参为类对象,其余签名一致的接口 Function bf = DemoBean::getB; } static class DemoBean { public static String getA() { return "A"; } public String getB() { return "B"; } }}
lambda开发中常见的应用
优雅的绕过NullPointException
package com.karmic.lambda;import java.util.Optional;/** * @author karmic */public class NullExceptionAvoid { public static void main(String[] args) { A a = new A(new B(null)); String s = Optional.of(a).map(A::getB).map(B::getC).map(C::getS).orElse(null); System.out.println(s); } static class A { B b; public A(B b) { this.b = b; } public B getB() { return b; } } static class B { C c; public B(C c) { this.c = c; } public C getC() { return c; } } static class C { String s; public C(String s) { this.s = s; } public String getS() { return s; } }}
放弃代码执行控制权
// Create bean instance. if (mbd.isSingleton()) { sharedInstance = getSingleton(beanName, () -> { try { // Spring源码,createBean方法是否执行的控制权,由getSingleton控制 判断bean是否已经创建过,再决定是否调用createBean方法 return createBean(beanName, mbd, args); } catch (BeansException ex) { // Explicitly remove instance from singleton cache: It might have been put there // eagerly by the creation process, to allow for circular reference resolution. // Also remove any beans that received a temporary reference to the bean. destroySingleton(beanName); throw ex; } }); bean = getObjectForBeanInstance(sharedInstance, name, beanName, mbd); }
MR式数据处理
package com.karmic.lambda;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.function.Function;import java.util.stream.Collectors;/** * @author karmic */public class StreamWordCountDemo { public static void main(String[] args) { @SuppressWarnings("serial") Listlist = new ArrayList () { { add("hello world"); add("hello java"); add("hello python"); add("hello kotlin"); } }; Map map = list.stream().map(s -> s.split(" ")) .flatMap(Arrays::stream) .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); System.out.println(map); }}
感谢各位的阅读,以上就是"如何理解lambda"的内容了,经过本文的学习后,相信大家对如何理解lambda这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
方法
对象
接口
类型
表达式
学习
开发
控制
一致
代码
内容
只有
控制权
相同
优雅
一行
全体
写法
就是
常见
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
陵水网络安全宣传周
大连饭饭网络技术公司
网络安全的注意点
软件开发部主管的QA职责
计算机三级网络技术刷题重点
网络安全新型防御技术
gta为什么自动选择服务器
安徽超频服务器厂家报价
分离数据库怎么恢复
魔兽数据库库存怎么做
服务器 修改数据库访问网关
微机原理与接口技术数据库
使用命令修改数据库名字为
对网络安全比赛的祝福
网络安全进企业活动的实施方案
开发区公安局网络安全宣传
日照正规的联想服务器
数据库高效优化架构规范
eplan如何连接数据库
数据库的通信机制
服务器安全卫士满足等级保护
北京通信软件开发过程
软件开发爱好者
服务器双电源设备能耗如何计算
数据库dbs概念
软件开发老师招聘
对日软件开发工资待遇
移动端和服务器端深度学习框架
代码上传到服务器之后
数据库安全外文书籍推荐