最新要闻
- 消炎止血、除口臭!中药黄芩牙膏大促:3支不到20块(送牙刷)
- 【世界聚看点】《博德之门3》Xbox版遭遇技术难题
- 天天快看点丨激光溶脂和吸脂的区别_激光溶脂和吸脂怎么区分
- 每人1600元!北京要发消费券了:买手机、PC、无人机等都能用
- 为博流量 女子与前夫摆拍家暴并直播谎称报警:结果被官方通报
- 当前快看:吸水好干得快:洁丽雅新疆棉毛巾4.98元发车
- 世界观察:不点拍照按键也能拍照!荣耀Magic 5全新技术曝光:堪比变魔术
- 全球观热点:自信满满!萌娃觉得自己掌握了英语的窍门 张口让网友沉默
- 当前播报:电动车里什么最耗电?13类电器功率排名来了!出乎意料
- 当前关注:义乌市百货有限责任公司
- 【新要闻】饰组词语接龙_饰组词语
- 世界要闻:猛男专属 吉利几何E超吸粉特别版上市:9.98万元
- 全球热点评!《三体》被改编成剧本杀 三体宇宙索赔300万
- 热资讯!算法正在谋杀新闻 各种日报带头摆烂 十亿中国网友却为此狂欢
- 联想小新Pro 14天青蓝来了:13代酷睿 1TB硬盘
- 天天日报丨国产架构的龙芯CPU可以跑QQ了!底层重写、与x86/Arm肩并肩
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Java 8 Lambda 方法引用 简记
Lambda 表达式以及方法引用
Java 8 的新特性笔记,重点讲的是:
- Lambda 函数式接口
- 方法引用
- Steam 流
Lambda 表达式
Lambda 的基础使用不记录,记录 JDK 8 实战
书上的一些底层和核心笔记。
行为参数化
一个贯彻 Lambda 表达式的一个模式、编程规范。
【资料图】
语句拆解:
- 行为:就是一个方法或函数
- 参数化:将原来的具体行为,变成一个参数,这个行为就是可变的,适用于多种场景。
主要的思想是:
eg:在某一个业务场景中,有一段业务代码,可能需要对一个参数进行一些主要的筛选判断,最后符合条件的才能添加到列表中。
// 过滤苹果的主要方法// Predicate 比较public static List filterApples(List inventory){ List result = new ArrayList<>(); for(Apple apple : inventory){ if(条件筛选){ // 是否符合被筛选的条件 result.add(apple); } } return result;}
通过上面这段代码,可以看到,这段代码的核心处理起始只有条件筛选这块,通过筛选后最后返回一个 boolean
值,为 ture
才能将苹果添加到列表中最终返回。
所以条件筛选的可能有许多不同的具体实现,但是毋庸置疑的是最终都需要返回一个 boolean
值来决定是否满足将苹果添加至列表的操作。
所以我们将条件筛选这个行为参数化,来优化代码,并使其更好扩展和维护。具体的实现可以直接百度 行为参数化
的详细介绍。
主要是将这个行为参数化的目的。
Java 8 内置的一些常用函数式接口:
大部分日常能用到的在:java.util.function
包下。
注意:函数式接口一般会在类上加上注解 @FunctionalInterface
标识这个是函数式接口。
Lambda 表达式的使用前提是函数式接口。
Lambda 的类型检查、类型推断以及限制
类型检查:
类型检查很好理解,根据使用 Lambda 的上下文(例如,接受它传递的方法的参数,或者接受它的值的局部变量)推断出来的,上下文中使用 Lambda 的类型称为 目标类型(就是使用哪个具体的类使用Lambda),根据目标类型(肯定是一个函数式接口)中的抽象方法签名来对应 Lambda 表达式的签名(包括抽象方法中声明的 throws 异常),检查这个 Lambda 表达式是否符合规范。
特殊的 void 兼容规则:
如果一个Lambda的主体是一个语句表达式, 它就和一个返回 void 的函数描述符兼容(当然需要参数列表也兼容)。
eg:以下两行都是合法的,尽管 List 的 add 方法返回了一个boolean ,而不是 Consumer 上下文( T -> void )所要求的 void。
List stringList = new ArrayList<>();// Predicate返回了一个booleanPredicate predicate = s -> stringList.add(s); // Consumer返回了一个voidConsumer consumer = s -> stringList.add(s);
类型推断:
使用 Lambda 表达式,如果至少有一个参数,则可以显示的说明参数的具体类型,同时也可以不显示说明,只写形参名,则会触发 Java 编译器的类型推断机制,根据上下文来推断 Lambda 表达式的参数类型。
注意:如果只有一个参数还可以省去参数两边的括号。
限制:使用局部变量
Lambda 表达式允许使用自由变量(实例变量,静态变量)以及局部变量,但是在使用局部变量时有限制。
我们必须保证 Lambda 表达式引用的局部变量最终是 final
,也就是说使用的是局部变量的副本,而不是直接去访问原始变量。
因为局部变量存在栈中,这个和 Lambda 执行时线程安全相关。
在使用实例变量时,可以改变赋值(引用地址),因为这些变量保存在堆中,而堆是在线程之间共享的
方法引用
Java 8 的另一个功能:方法引用,某些 Lambda 的快捷写法。
基本思想:如果 Lambda 代表的只是 “直接调用这个方法”,可以直接用名称调用它,而不是去描述如何调用。
使用方法:目标引用 :: 方法名称
复合 Lambda 表达式的有用方法
例如:Comparator、Function 和 Predicate 都提供了允许你进行复合的方法。
比较器复合(Comparator)
List
逆序
inventory.sort(Comparator.comparing(Apple::getWeight).reversed());
比较器链:thenComparing() 如果一样,则按照指定的规则排序
inventory.sort(Comparator.comparing(Apple::getWeight).thenComparing(Apple::getColor));
谓词复合(Predicate)
接口包含三个默认方法:negate、and 和 or
,重用已有的 Predicate 来创建更复杂的谓词。
redApple
是现有的 Predicate
的实例。
negate:
表示此谓词的逻辑否定的谓词。
Predicate
-- > 苹果不是红色的notRedApple = redApple.negate(); and:
该谓词表示此谓词与另一个谓词的短路逻辑AND。在计算组合谓词时,如果此谓词为假,则不计算其他谓词。
Predicate
-- > 苹果又红又重。redAndHeavyApple = redApple.and(a -> a.getWeight() > 150); or:
一个组合谓词,该谓词表示此谓词与另一个谓词的短路逻辑或。在计算组合谓词时,如果此谓词为真,则不计算其他谓词。
Predicate
-- > 要么苹果又红又重,要么就是绿苹果。redAndHeavyApple = redApple.and(a -> a.getWeight() > 150).or(a -> "green".equals(a.getColor()));
函数复合(Function)
compose()
andThen()
两者都是函数的复合,其主要区别是:
- compose:
f.compose(g)
,先调用 g 再调用 f - andThen:
f.andThen(g)
,先调用 f 在调用 g
可以用作流水线模式。
-
Blender插件:水滴生成器(Droplet Generator)
推荐:将& 160;NSDT场景编辑器& 160;加入你的3D开发工具链。原文地址:https: www mvrlink com ...
来源: Java 8 Lambda 方法引用 简记
全球看热讯:(数据库系统概论|王珊)第七章数据库设计-第三节:概念结构设计
Blender插件:水滴生成器(Droplet Generator)
环球速递!《分布式技术原理与算法解析》学习笔记Day22
消炎止血、除口臭!中药黄芩牙膏大促:3支不到20块(送牙刷)
【世界聚看点】《博德之门3》Xbox版遭遇技术难题
天天快看点丨激光溶脂和吸脂的区别_激光溶脂和吸脂怎么区分
每人1600元!北京要发消费券了:买手机、PC、无人机等都能用
为博流量 女子与前夫摆拍家暴并直播谎称报警:结果被官方通报
当前快看:吸水好干得快:洁丽雅新疆棉毛巾4.98元发车
【Java】ArrayList线程不安全的坑
世界观察:不点拍照按键也能拍照!荣耀Magic 5全新技术曝光:堪比变魔术
全球观热点:自信满满!萌娃觉得自己掌握了英语的窍门 张口让网友沉默
当前播报:电动车里什么最耗电?13类电器功率排名来了!出乎意料
当前关注:义乌市百货有限责任公司
【新要闻】饰组词语接龙_饰组词语
运算符重载
世界要闻:猛男专属 吉利几何E超吸粉特别版上市:9.98万元
全球热点评!《三体》被改编成剧本杀 三体宇宙索赔300万
热资讯!算法正在谋杀新闻 各种日报带头摆烂 十亿中国网友却为此狂欢
联想小新Pro 14天青蓝来了:13代酷睿 1TB硬盘
天天日报丨国产架构的龙芯CPU可以跑QQ了!底层重写、与x86/Arm肩并肩
当前滚动:全商汇深圳控股集团有限公司_全商汇
世界资讯:Eureka高可用集群服务端和客户端配置
今日精选:NEMU PA 1 实验报告
Spark系列 - (4) Spark任务调度
天天快资讯丨第122篇: JS函数一些基本概念
独居老人为家中热闹没装大门 多车误入院子
每日资讯:RTX 4090显卡都能用 长城850W金牌全模电源504元(每瓦0.6元)
day03-自己实现Mybatis底层机制-02
如何设计高并发项目
天天快资讯丨Android 应用接入 Firebase Crashlytics 进行崩溃分析上报
热议:Java 中 hashCode 和 equals 方法是什么?它们和 == 各有什么区别?
热门:沃尔沃XC90 T8充电版:经过最新升级后仍是首选SUV
全球新消息丨网友用AI生成《黑豹2》电影白人版海报 激怒正义人士
面向对象进阶第二天
环球视点!# 009 - 检验 (2)
热讯:邝飚
天天滚动:长度仅23.5mm:尼康尼克尔Z 26mm f/2.8饼干镜头上架
iPhone更香?调查显示近半数安卓用户考虑换苹果
最后一个武侠杂志 《今古传奇·武侠版》停刊:闭关修炼
今日快看!力压西游记、红楼梦 豆瓣9.8分:《大明王朝1566》封神国产剧
【天天快播报】python-函数
焦点热文:58.抽象数据类型
青海首次实现330千伏同塔双回线路中相导线带电消缺
男子工作期间上厕所摔伤:被判工伤
周杰伦发文谈论AI 称AI取代不了音乐创作的美感
今日快讯:86岁老人鸡骨头卡入支气管16年:部分骨头被气管黏膜包住
带货主播李佳琦进浙江一大学招美女主播:教室爆满 女生尖叫
学生点外卖评3星被商家威胁:不删除差评 让学校把你开除
linux中redis下载安装部署启动
环球视讯!21、现有网络模型的使用以及修改
环球看热讯:(数据库系统概论|王珊)第七章数据库设计-第二节:需求分析
世界速读:周鸿祎:ChatGPT迟早会产生自主意识 为人类带来毁灭危机
我国新一代载人登月飞船模型首次展出:将建造月球科研站
每日热议!委员建议:允许重大节日燃放烟花爆竹 应科学限放
吃透8图1模板,人人可以做架构
免费开源的邮件服务器搭建
天天热门:蚁群算法
每日热闻!Prometheus安装部署(主体)
【世界速看料】保时捷新能源车高架冒烟 司机:开得好好的就着了 差点被烧死
环球讯息:罗技Trophy G驾驶舱发布:兼容所有方向盘、踏板、主机和PC
百事通!网友称5千元买洗地机用2小时就坏掉:售后无门
天天速讯:十铨发布新款PCIe 5.0固态硬盘:顺序读取12000MB/s、配石墨烯散热片
当前速看:祸从天降!东北冰溜子从5楼坠落砸伤女子:北方人一定要注意
惠州普通话水平考试准考证查询
Joomla未授权访问漏洞(CVE-2023-23752)
环球头条:Go复合数据类型数组和切片
世界热点!springCloud Alibaba服务的注册与发现之eureka搭建
当前简讯:业内第三种烘干技术!石头宣布分子筛洗烘一体机H1
全国多地现“三星连珠”天象:金星、木星、弯月连成一条线
世界快讯:石头分子筛洗烘一体机H1发布:打破洗烘行业技术天花板
百度新车标外观专利获授权 造型罕见
世界观天下!小米新专利获授权:一卡多号 可节省功耗
what are ESC、BEC and UBEC ?
环球微动态丨不通过ArcGIS写Personal Geodatabase(esri mdb)
最新消息:我们喜爱的 10 种免费 SQL Server 资源
世界新消息丨ChatGPT对于普通人有什么机会和影响?
世界热消息:8成特效中国制作!《流浪地球2》豆瓣涨至8.3 超100万人评分
当前动态:38秒旋风榨汁 小熊无线多功能榨汁机34.9元大促
3000元档超香二代骁龙8旗舰!努比亚Z50 16GB+256GB狂飙版来了
《暗黑》平替?《火炬之光:无限》国服官宣5月公测
头条焦点:首个游戏版ChatGPT 网易《逆水寒》手游预计上半年推出:自研AI得分超过人类
tcl电冰箱
消息!北向资金本周净卖出41.25亿元
观天下!分布式事务和Spanner分布式数据库
8000+字,就说一个字Volatile
环球关注:ChatGPT迅速学会下棋精髓 把人类给整不会了 网友:这谁预判得了?
世界快报:长城拼了!哈弗H6 DHT-PHEV限时优惠1.5万元:仅14.48万起
全球短讯!iPhone 15标准版上了灵动岛和USB-C接口:但跟Pro版差距还是太大
《狂飙》高启兰在日本火爆出圈 网友:《柯南》妃英理本理
全球今亮点!数字孪生|可视化图表之分组柱状图
世界今日讯!测试角色在项目各阶段的项目管理tips
当前速读:【JVM】JDK7后intern方法总结
世界热讯:centos7多网口配置同网段IP解决方案
焦点快播:【Vue】vue3 元素在某区域内缩放拖拽
灵活就业交医保太亏了怎么说?交医保太亏了具体指的是什么
苹果水下操控iPhone屏幕专利获批:或万元起售的Ultra机型独享
当前信息:魅族20电池寿命稳了:1600天连续充放容量仍大于80%
【新视野】日系车再受质疑!铃木维特拉遭车主集体投诉:刹车变硬踩不动