Java 8之前和之后的Lambda表达式

Java 8之前和之后的几个示例程序的快速指南。Java8 Concepts进一步简化了代码,并且对核心逻辑(而不是语法)产生了深远影响。

1.简介

在本教程中,我们将学习如何使用Java 8编写程序
lambda和Stream概念以及示例。 许多开发人员认为学习Java 8概念可能很难理解。 但是,一旦我们很好地使用它们,便可以减少易于出错的代码并提高应用程序的性能。

阅读有关Java 8 Lamda表达式规则的文章

在本文中,我们将看到有关使用比较器进行排序,文件名验证,仅检索隐藏文件以及根据条件过滤列表对象的示例程序。

2.排序-Lambda表达式

2.1在Java 8之前

请参阅以下在旧版Java中实现的代码。 这里尝试根据id列对Employee的排序。

 Collections.sort(emplyeesList, new Comparator() { public int compare(Employee a1, Employee a2){ return a1.getId().compareTo(a2.getId()); }  }); 

在这里,分5行编写的代码包括Comparator实现。

2.2在Java 8中

请参见下面的Java 8代码。所有代码都在一行中,没有看到比较逻辑。

 emplyeesList.sort(Comparator.comparing(Employee::getId)); 

在这里,比较器是一个只有一种抽象方法的功能接口。

比较器具有一个静态方法compare(.Function。),该方法仅接受Funtion接口。

https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html

注意:Function <T,R>也是一个功能接口。 它有一个apply(T t)方法,将从Comparator.comparing()方法中调用。

3.使用Lambda表达式验证文件名

3.1在Java 8之前

请参阅Java旧版本中的代码。 这里的核心逻辑是
file.getName()。 结尾于 (“ .xml”) ; 剩下的代码只是语法。

 File[] hiddenFiles = new File( "directory_name" ).listFiles( new FileFilter() { public boolean accept(File file) { return file.getName().endsWith( ".xml" ); }  }); 

3.2在Java 8中

上面的代码简化为单行,从而减少了错误。

 File[] hiddenFiles = new File( "directory_name" ).listFiles( file -> file.getName().endsWith( ".xml" )); 

注意:Java 8仅关注业务逻辑并在内部采用其语法。 开发人员不必担心。

4.仅检索隐藏文件– Lambda表达式

4.1在Java 8之前

File有一个方法可以使用isHidden()方法检查该方法是否隐藏。

 File[] hiddenFiles = new File( "directory_name" ).listFiles( new FileFilter() { public boolean accept(File file) { return file.isHidden(); }  }); 

4.2在Java 8中

仅将新的方法参考概念用作新的Java 8的一部分。

 File[] hiddenFiles = new File( "directory_name" ).listFiles(File::isHidden); 

5.结论

在本文中,我们看到了Java 8前后的lambda程序示例。

观察它们之间的差异。 Java 8在许多方面都比Java历史上的其他任何变化都更加深刻。

翻译自: https://www.javacodegeeks.com/2020/05/lambda-expressions-before-and-afterjava-8.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea java主题_IDEA变身超级形态,需要这个酷炫主题

码个蛋(codeegg) 第 1090 次推文作者&#xff1a;CodeWhite7链接&#xff1a;https://blog.csdn.net/weixin_46146269/article/details/104793277前言IDEA&#xff0c;全称 IntelliJ IDEA &#xff0c;是 Java 语言的集成开发环境&#xff0c; IDEA 在业界被公认为是最好的 jav…

儿童python编程能给孩子带来哪些好处_python编程入门学习对孩子成长有哪些优势?...

python编程语言学习有意义吗&#xff1f; python编程语言是少儿编程培训课程中重要的组成部分&#xff0c;随着越来越多的孩子开始接触和学习编程&#xff0c;通过编程学习培养孩子良好的学习习惯和锻炼提升孩子逻辑思维能力。在python编程培训班学习过程中&#xff0c;通过pyt…

yii2 html ul,yii2导航小部件子菜单类

我使用adminLTE主题进行bootstrap,它使用treeview-menu类来操作子菜单.Nav::widget([options > [class > sidebar-menu treeview],items > [[label > Menu 1, url > [/a/index]],[label > Menu 2, url > [/custom-perks/index]],[label > Submenu, ite…

百度云盘照片导入华为相册里_必须知道的相册管理工具

相信很多人都会在手机上存许多值得回忆的照片&#xff0c;为了避免丢失&#xff0c;我们常常会使用网盘工具来管理我们的照片&#xff0c;例如&#xff0c;比较常用的有百度网盘、天翼云盘、115网盘这三款工具&#xff0c;那么这三款网盘在相册功能上有什么特色呢&#xff1f;今…

微信H5 回调_PHP实现微信H5支付

今头日条一小马奔腾 2019-09-27 18:44:37开发前配置进行代码接入前&#xff0c;需在微信后台填写授权回调域名&#xff0c;此域名必须经过ICP备案开发主要流程用户下单时选择微信支付商户进行业务逻辑处理并调用微信统一下单接口&#xff0c;微信H5交易类型为&#xff1a;trade…

freemarker html 乱码,Freemarker生成静态html文件及中文乱码的问题.pdf

Freemarker生成静态html文件及中文乱码的问题,freemarker静态化页面,freemarker静态化,freemarker乱码,freemarker静态方法,freemarker中文乱码,freemarker网页静态化,freemarker生成word,freemarker代码生成器,freemarker生成htmlFreeMarker 允许 Java servlet 保持图形设计同…

java 泛型嵌套泛型_Java泛型简介–第6部分

java 泛型嵌套泛型这是关于泛型的介绍性讨论的延续&#xff0c; 此处的先前部分可以在此处找到。 在上一篇文章中&#xff0c;我们讨论了关于类型参数的递归边界。 我们看到了递归绑定如何帮助我们重用了车辆比较逻辑。 在该文章的结尾&#xff0c;我建议当我们不够谨慎时&…

优化自定义函数_Pandas常见的性能优化方法

文章来源于Datawhale &#xff0c;作者阿水Pandas是数据科学和数据竞赛中常见的库&#xff0c;我们使用Pandas可以进行快速读取数据、分析数据、构造特征。但Pandas在使用上有一些技巧和需要注意的地方&#xff0c;如果你没有合适的使用&#xff0c;那么Pandas可能运行速度非常…

pycharm cant open file_PyCharm

1.创建项目PyCharm是一种Python IDE.PyCharm的功能到底有多强大&#xff0c;我也说不清楚&#xff0c;今天只是介绍一下关于Pycharm创建项目的问题.✦ PyCharm可以将一个文件夹作为工程(或项目)进行打开.如图1所示&#xff0c;先创建两个文件夹(pyc1和pyc2)&#xff0c;在文件夹…

adminlte支持html5吗,spring boot:用adminlte做前端

标签(空格分隔)&#xff1a; sringboot adminlte thymeleafspring boot 和 adminlte没有紧密的联系&#xff0c;只是最近在做的一个东西用spring boot做后端用adminlte做前端&#xff0c;所以就放到spring boot系列里面讲。架构原理adminlte只是一个库&#xff0c;说不上什么框…

如何通过示例使用Java中的Exchanger

大家好&#xff0c;如果您在并发Java应用程序中工作&#xff0c;那么您可能听说过java.util.concurrent包的Exchanger类。 Java中的Exchanger是Java 1.5中与CountDownLatch &#xff0c; CyclicBarrier和Semaphores一起引入的另一个并发或同步实用程序。 顾名思义&#xff0c; …

python里写在文件的指定行_python文件操作如何写在指定的行

常常在操作文件时我们只想在某一行的插入信息&#xff0c;可以先将文件读入列表中&#xff0c;利用列表的下标插入文本&#xff0c;之后再重新写入文件。但是弊端是&#xff0c;如果文件量太大列表的性能可能不是很高。python代码&#xff1a;#codingutf-8lines[]fopen("d…

外星人跑深度学习_上海港汇外星人店,51M2020开光追和DLSS2.0畅玩《赛博朋克2077》...

上海外星人港汇恒隆广场店是外星人布局上海的首家3.0店面&#xff0c;坐落在繁华的徐家汇商圈港汇恒隆广场南座6楼。门店传承了外星人高端高品质&#xff0c;以服务客户为宗旨&#xff0c;立足上海&#xff0c;辐射周边&#xff0c;服务所有外星人客户。近日&#xff0c;让全球…

python flask html模板,python flask web开发实战 Jinja2模板

templates/index.htmlHello World!templates/user.htmlHello, {{ name }}!渲染模板&#xff1a;from flask import Flask,render_templateapp.route(/)def index():return render_template(index.html)app.route(/user/)def user(name):return render_template(user.html, name…

gwt前台开发_为GWT设置开发环境

gwt前台开发介绍 这是旨在用Java开发跨平台移动应用程序的系列文章的一部分 。 在此博客文章中&#xff0c;我们将了解GWT是什么&#xff0c;并为GWT设置开发环境。 GWT是一个开源开发工具包&#xff0c;用于开发基于浏览器的复杂Ajax应用程序。 使用GWT&#xff0c;您可以用J…

linux 释放进程res_linux内存查看及释放

查看内存常用的查看内存工具有&#xff1a;top&#xff0c;ps&#xff0c;free&#xff0c;/proc/meminfo&#xff0c;/proc/$PID/status等&#xff0c;一般都指定了虚拟内存占用情况&#xff0c;但ps或/proc/$PID/status中RSS或RSZ指定的是实际内存大小。1)freeroot:~# freeto…

js读取外部json指定字段值完整代码_前端工程化 剖析npm的包管理机制(完整版)...

导读 现如今&#xff0c;前端开发的同学已经离不开 npm 这个包管理工具&#xff0c;其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区&#xff0c;理解其内部机制非常有利于加深我们对模块开发的理解、各项前端工程化的配置以加快我们排查问题(相信不少同学收到过各种依赖…

计算机专业带给我们的启示,一次电脑网络调查带给我的启示

一次电脑网络调查带给我的启示当今世界&#xff0c;鲜有人不会上网。而许多孩子&#xff0c;也迷上了电脑。就此&#xff0c;我对周围的12个朋友做了调查。其中3人上网玩QQ&#xff0c;8人玩摩尔庄园&#xff0c;仅1人玩单机游戏。很显然&#xff0c;网络已深入孩子们的生活。做…

Apache Derby数据库JVM安全策略

抽象 我已经发布了许多有关Derby的博客&#xff1a; Derby数据库备份 同一主机上的多个Derby网络服务器 Apache Derby数据库用户和权限 与Maven和内存中Derby数据库的集成测试 这本不打算是一个系列。 但是多年来&#xff0c;我越来越多地使用Derby。 我开始使用Derby作为…

大师兄科研网vasp_怎样知道一名研究生有没有科研潜力?

原答案回答在这里了。怎么知道一名研究生有没有科研潜力&#xff1f;​www.zhihu.com大家熟悉的“员工执行力”这个词&#xff0c;其实是个伪命题&#xff0c;因为员工的执行力&#xff1d;领导的领导能力&#xff0c;领导方法得当&#xff0c;每个人都有很强的执行力。那么“学…