如何理解lambda
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"如何理解lambda",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何理解lambda"吧!lambda语法类型为接口,有且只有一
千家信息网最后更新 2025年02月23日如何理解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安全错误
数据库的锁怎样保障安全
软件开发文档扫描pdf
表格类软件开发费用
农安网络技术推荐咨询
欧盟网络安全监管法
java服务器时间
愚公网络技术有限公司
东南亚租服务器有用吗
软件开发数据怎么保存
合格软件开发人员
数据库bim国内发展
怎么理解软件开发思想
虚荣服务器
鄞州一站式软件开发工程
网通服务器ip
梦幻手游服务器列表
浪潮服务器进入不了raid
长三角网络安全产
pvp服务器怎么加天赋
个人软件开发协议模板下载
全国工商联网络安全委员会成立
我叫mt数据库修改
泉州网络安全平台
淄博直播软件开发哪家靠谱
中国台湾手机软件开发哪家专业
软件开发项目抽成如何定
山东蓝创网络技术股份
数据库1对1关系
郑州炒股软件开发
2b 2t服务器ip地址
计算机创新软件开发