lambda表达式在实际开发中的使用

作为写代码已经两年的程序员了,lambda已经是再熟悉不过了。其实在众多的编程语言中,python javascript java中都有lambda的影子。包括比较新的编程语言golang,到最后发现其实各种语言的语法和特性都是相互抄袭的,所以在接触新技术的时候,很容易触类旁通。

那接下来shigen将会展示在实际的开发中,用到过的lambda的详细使用案例。你会发现代码减少了很多,而且看起来更加的优雅了!

python

在这里shigen就直接上代码截图了。

在我再次尝试书写的时候,我发现在python里,其实关键词就是filter map lambda,我们来看看最长的一行代码中,map给的提示:

其实就是这样的一层层的嵌套,我们只需要去满足对应的参数类型即可实现畅快的使用lambda表达式。在我的文章树形结构的快速生成中也有用到lambda表达式实现数据的过滤。

shigen在实际的开发中遇到的最多的场景也是这样的,其它的快捷操作后续将会持续补充。

javascript

其实jslambda用法和python的非常像,特别是在接触vue之类的框架和ts以后,用的非常多,涉及到的最多的就是对于数组对象的处理。shigen在这里一时半伙也找不出很好的实际案例,在这里先列举一下我用上边的python代码改写之后的效果:

其实第一感觉就是无缝的切换,除了一些关键字不同之外。

那下边的重头戏来了,我们看看java的实现,这里的部分内容参考了文章:值得使用Lambda的8个场景,别再排斥它了!

java

作为我研究比较久的语言之一,我喜欢用它的新语法简化实际的开发。最近写的代码有这样的:

正如我的注释写的,将复杂的数据变成两个数组,然后包装在一起,作为echarts的数据源。

一些简单的操作写法和上边的python js语法相同,在这里我写一些不常见但是很常用的写法:

集合的聚合操作

其实这里引入了reduce这个api,我们看一下注释:

这里 min max average 都是可以使用的,并且不需要去加锁,考虑线程安全的问题。

条件过滤和默认值

先来看一下代码:

这里用到了Optional 和filter的组合。很好的解决了空指针的问题,也减少了if else的判断。

匿名内部类

最常见的还是线程池的创建了:

scss 复制代码
 new Thread(() -> System.out.println("Thread is running.")).start();
 ​
 new Thread(() -> {
     // do something
 }).start();

针对的是接口的实现类只有一个方法的情况。

集合元素的转换

我们还是先来看下代码案例:

这里是将数组转换成集合,官方的代码API中也给了其它的使用案例,包括分组统计,其实具体的案例可以在调用API的时候,稍微注意一下官方的文档。

大数据量进行并行处理

这里主要用到的是parallelStream(),其它的用法和stream的用法是相同的。对于线程安全的问题,我目前还有一点点的争议,后期会专门出一期文章讲解这个,我们共同期待!


以上就是《lambda表达式在实际开发中的使用》的全部内容了,觉得不错的话,记得点赞支持一下哈!

shigen一起,每天不一样!

相关推荐
刘大辉在路上1 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
追逐时光者3 小时前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql
初晴~4 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
盖世英雄酱581364 小时前
InnoDB 的页分裂和页合并
数据库·后端
小_太_阳4 小时前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾4 小时前
scala借阅图书保存记录(三)
开发语言·后端·scala
星就前端叭5 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
小林coding6 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
AI理性派思考者6 小时前
【保姆教程】手把手教你在Linux系统搭建早期alpha项目cysic的验证者&证明者
后端·github·gpu