做了这么久的程序员,你知道为什么会有 Lambda 表达式吗?

Java8 有一些新的特性,今天老顾给大家分享一下关于 Lambda 表达式的由来,一开始感觉 Lambda 可读性蛮差的,不知道 为什么 Java8 会出来这个表达式?既然大佬们推出来,肯定是有原因的,应该是为了解决一些问题,那我们就看看解决了什么问题?

班导想了解一下各个同学的相关情况:

1、来自苏州的有哪些同学

上面的伪代码,是不是很简单,写一个方法,直接过滤出苏州地区的学生。

班导又想知道来自北京的有哪些同学,那代码执行优化一下,可以动态传地区参数。

2、地区参数化

这样是不是就解决了,所有地区的查询问题,把地区作为一个参数

问题好像得到了解决,突然班导又要知道同学们的年龄分布。

3、可以查出 20 岁以上的学生

这一次直接到位,把年龄参数化

我们发现因为班导的两个需求,根据地区和年龄查找学生,我们程序员提供了两个方法,filterStudentByArea 和 filterStudentByAge。

我们小伙伴们有没有发现,此两个方法里面的代码是不是很像,有很多重复的代码。不过满足需求就行了,还能接受是吧。

因为上面是两个方法,很多小伙伴会想到可以改成一个方法,用 flag 标记查询的业务。

改为一个方法,flag 为 true 表示根据年龄范围查找学生;flag 为 false,表示查地区里面的学生

调用方式

List<Student> areaStudentList = filterStudent(students,"苏州",0,false);
List<Student> ageStudentList = filterStudent(students,"",20,true);

虽然改造了一个方法,但实现方式比较恶心。

小伙伴们会说那就不要优化了,两个方法就两个呗。其实如果需求不变了,这样也是没问题的,但如果班导又提出要根据学生成绩进行查询,或又要根据学生的体重、身高等;每增加一个维度都要写相应的方法,导致很多重复的代码

正是金九银十跳槽季,为大家收集了2019年最新的面试资料,有文档、有攻略、有视频。有需要的同学可以在公众号【Java知己】,发送【面试】领取最新面试资料攻略!暗号【1024】千万不要发,否则.....

4、使用JAVA 的设计模式

作为一个有上进心的,有追求的程序员,这种方案感觉很变扭,要想个方法解决。突然想到了 JAVA 的设计模式,是不是可以用这个解决啊,我们来看看。

还好我们的小伙伴们知道一点设计模式,那用策略模式进行改造吧

定义一个接口,用来进行过滤的接口,我们可以实现这个接口,去完成不同的需求,如:

上面定义了两种查询条件,都是实现了 StudentPredicate 接口,那我们再看看主方法

上面的核心代码就是 p.test(stu);这个就是查询条件逻辑实现方法;要查询某个业务,只需要把相关业务的接口实现传给这个主方法就行了

上面的方式代码相对比较优美,如有别的查询需求,只要实现 StudentPredicate 接口就行了。但这点也是个缺点,每个需求都要去写相关的接口实现。

为了解决接口实现太多,可以采用匿名类去解决,再来优化一下

这种方式大大的减少了接口实现类,需要什么业务需求,直接在调用方法的时候建立匿名类去实现就行了。匿名类的方式,我们的大佬觉得还是不够简洁,所以 Java8 中新增了 Lambda 表达式,我们看看。

我们来看看 Lambda 表达式的实现

小伙伴们看看,是不是很简洁。

每个技术的出现肯定是为了解决一些问题的,小伙伴们在学习的时候,一定要知道为什么,解决什么问题,这样会对我们了解这个技术点更深入,下一篇老顾再来说说 Lambda 表达式的具体用法,谢谢!!!


“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!

关注公众号:「Java 知己」,每天更新 Java 知识哦,期待你的到来!

  • 发送「面试」,领取 BATJ 面试资料、面试视频攻略。
  • 发送「Group」,与 10 万程序员一起进步。
  • 发送「玩转算法」,领取《玩转算法》系列视频教程。
  • 千万不要发送「1024」,否则......

原文地址:https://www.cnblogs.com/java-friend/p/11555759.html

时间: 2024-08-05 21:16:28

做了这么久的程序员,你知道为什么会有 Lambda 表达式吗?的相关文章

好程序员分享java8新特性之Lambda表达式

?.Lambda表达式简介 什么是Lambda? Lambda表达式是Java 8推出的?个新特性.从本质上讲,Lambda表达式是?个匿名函数. 为什么要使?Lambda? 使?Lambda表达式可以对?个接?进??常简洁的实现. 之前我们在给?个接?引?赋值的时候,可以使?接?实现类,或者匿名内部类.但是有了 Lambda表达式,我们可以更加?便的实现这个需求. interface Comparator<T>?{ int compare(T o1, T o2); } class Progr

做一个有脑子的程序员

程序员是最理性的一个群人,除非面对电子产品的时. 程序员是一群高智商的群体,唯一的缺点就是发际线总是很难防守. 程序员是一群情商比较低的人群,常常看到程序员仅仅因为对技术的理解不同而大吵起来. 程序员常常是一群豁达的人,今天大吵一架明天接着聊代码. 但今天要讨论的却是,做一个有脑子的程序员. 有一个朋友也开了公众号,偶尔写写自己对技术的理解,平时也没怎么宣传,所以同事都不知道.有一天一个同事问他一个关于微服务的问题,刚好他前两天研究了这块,就将公众号中的文章分享给了同事. 同事看完之后解决了问题

黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

------- android培训.java培训.期待与您交流! ---------- Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字:goto和const保留了它们,但是Java没有使用. 运算符:注意运算符优先级(左结合和右结合要注意) 分隔符:注意+号可以分割字符串. 注释:三种注释. 数据类型与变量 常量: 整型 浮点型 字符:注意后面跟三个八进制(\ddd)和 四位unicode码(\u8bf7) (不区分大小写) 字符串 布尔型 变量:

做一名合格的程序员(learning of a previous team)

合格程序员的基本素质 作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具 有的素质.  1 团队精神和协作能力 把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最 重要的安身立命之本.把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有 限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球 的为linux写核心的高手们,没有协作精神是不可想象的.独行侠可以作一些赚钱的小软 件发点小财,但是一旦进入一些大系

Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)

今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> /// 测试值为枚举 /// </summary> [TestMethod] public void TestGetValue_Enum() { var test1 = new Test1(); test1.NullableEnumValue = LogType.Error; //属性为枚举,值

程序员,做技术神马的,请对自己好一点!

昨天在Google图片中输入“程序员”,搜索到的第一张图片是这样的: 一位平头兄桌上两台笔记本一台台式机.其中的一台中显示是某个论坛的页面[估计正在回答某个问题].中间那台正在启动Eclipse[要开始写Java程序了].平头兄的目光此时盯在台式机的显示器上[应该是正在远程或者是某个虚拟机],旁边还有一本打开的书… 图片的名字是“真正的程序员就应该这样”,程序员就应该这样么? 是谁规定程序员就应该是这样的,本来是应该四个人做的事情让一个程序员做,难道程序员是四核的? 作为程序员中的一份子,我时刻

你真的准备好了做一名程序员了嘛?

这篇文章开始准备做一个大学生学编程文章,主要帮助一些还在编程路上徘徊的小伙伴,作为一个过来人的身份总结一些编程经验以及心得,在自学的过程中走了很多的弯路,在此通过这个分享给需要编程的小伙伴. 无数个人心中都有一个编程梦,想着自己能够做在电脑旁边敲代码,做出自己心目想象到的软件,是一件很酷的事情. 但仅仅只是想而言,想要做一名合格的程序员,必须具备两个条件,发自内心的喜欢编程,另外一个觉得做编程觉得挣钱还可以(急需要钱型的),如果不是这两种驱动力的不建议加入到编程大军里面,即使勉强的挤进来了,也不

如何做程序员喜欢的测试妹子?

原文链接(作者一个人):https://juejin.im/post/5d4e2ea76fb9a06b2f5fa018 昨天看了一篇文章叫<如何做测试妹子喜欢的程序员>,觉得作者点的很到位,首先我是一名程序员, 那么站在一名合格程序员的角度,怎么看待这些观点呢,没看过上面文章的同学,可以抽两分钟时间阅读下,文章简单有趣, 今天我想借此机会说说我的观点,并且也表达下站在测试的角度,如何做程序员喜欢的测试妹子?我们也聊聊有趣的故事. 先从测试妹子的文章观点说起 1.测试妹子说开发举一反三讨人喜欢:

做了两年程序员对未来迷茫怎么办?

近期新霸哥看了一些关于技术交流的QQ群聊天记录,其中感慨最深的就是有一哥们说自己做程序员都快两年了,不知道自己想要啥,该怎么做,是继续做程序员该是转型做其他的行业?这个问题,新霸哥相信有很多的朋友也经历吧. 回想过去刚刚进入职场,特别是进入了一个高薪的职位的时候,虽然会很苦,很累,但是一想到是自己的专业工作,知道自己想要啥,就一股劲的拼命的向前冲.可是两年后的今天为什么会出现不知道该做啥好呢?这个时候新霸哥建议是时候该停下工作好好的重新认识自己,这样不仅对公司还是对个人都是有利的. 新霸哥觉得,