type
status
date
slug
summary
tags
category
icon
password
Property
May 25, 2023 01:58 AM
本文主要介绍在处理List集合数据中复杂对象的时候,如何巧用Lambda进行解构过滤

巧用Lambda

提到Lambda想必Javaer都不会陌生,自JDK8开始,Lambda就开始流行了起来,与其相关的一系列官方的API诸如Stream流等也在越来越多的开源项目中常见到。
函数式接口,Lambda这个东西我们熟悉都应该熟悉,它的应用场景也有很多。
只是我们在用的时候,如果经验不够,可能不会特定想到用这个方式去解决实际的问题。
举个例子:一个从DB中IO的Data,假定这个data是一个集合对象,子项是一个属性繁多的复杂对象,需要根据这个对象某个属性进行过滤操作,如果对Lambda不够了解或者说不够熟悉的时候,可能司空见惯的就是对着集合一把梭,拿着就直接循环if判断过滤,如以下代码:
这样的代码不仅在形式上不美观,而且在反应你解决问题的思维程度上,拉低了你的格局。
那怎么操作呢?更优雅一点的方式就是通过Lambda来解决:
接下来以实际操作为例,设有一个需求,需要将业务流程最终的数据进行清洗过滤,依照集合子项的某一属性进行过滤,而子项是一个复杂对象。这时候应该首选Lambda进行操作,以下是代码过程:

编写函数式接口方法

编写Function参数,并设定Predicate<T>返回对象,通过cacheMap来做核心去重操作,用于在Map中插入一个键值对,但只有在该键不存在时才会生效:

紧接着实现核心代码

完整的测试代码如下

测试结果如下

notion image
 
相关文章
计算机视觉(一):深度学习的人脸应用
Lazy loaded image
计算机视觉(二):特征向量计算
Lazy loaded image
计算机视觉(三):人脸识别之特征提取
Lazy loaded image
Flowable(一):Java知识学习
Lazy loaded image
Flowable(二):数据库篇
Lazy loaded image
Flowable(三):Liquibase模式管理
Lazy loaded image
LeetCode刷题日记(一):从二分法看透算法优化本质LeetCode刷题日记(1):今日刷题-基础数组双指针-034
Loading...
fntp
fntp
多一点兴趣,少一点功利
最新发布
JUC核心篇(七):线程池底层原理
2025-2-26
JUC核心篇(六):阻塞队列
2025-2-24
JUC核心篇(四):CAS与AQS
2025-2-22
JUC技术篇(六):Volatile关键字
2025-2-21
JUC技术篇(五):Synchronized锁
2025-2-21
JUC核心篇(三):LockSupport与线程阻塞
2025-2-21
公告
📝 博客只为了记录我的学习生涯
😎 我的学习目标是成为一名极客
🤖 我热爱开源当然我也拥抱开源
💌 我期待能收到你的Email留言
📧 我的邮箱:stickpoint@163.com
欢迎交流~