lambda的java_一分钟搞明白java8中的lambda

项目结构是这样的

142e950406894bac2bbec41784dfaa69.png

User是一个普通的pojo类

2c184e8b0842bb32921a89701e9440f2.png

UserCompare是一个实现了Comprator的类

246812b62852da07774549b2fb9ad47c.png

现在我们有一个需求:给一个user组成的list 按照user的年龄排序。实现不难,代码如下:

51afd063441b68d9c3cf1fe6f4383e4c.png

这种方法由于sort方法的第二个参数是Comparator 所以你要写一个实现类(我这里是UserCompare类),并且override该接口的实现方法。

java8提供了lambda来简化,有了lambda程序员从此不加班呀~

5819467306899dcf49785b28bf190421.png

刚才那个Comparator的实现类以及内部若干代码就都省了,代之以lambda表达式。

另外,IntelliJ会提示你改成更好的写法

70dfbb4236fa64972c525100073aa31b.png

实现类里有多少代码,你就省了多少行代码。

高兴了半天,到底是什么原理呢?其实是java8新提供的语法糖。

862b37fef99cea4b801473564455cc0f.png

我们打开java1.8 Comparator的定义,发现了类定义上面多了一个@FunctionalInterface

对,1.8多了一个概念就是FunctionalInterface,这个Comparator就是一个FunctionalInterface

有了这个注解,原来使用实现类的地方就可以代之以lambda表达式。

我水平有限,如果你看到这还没明白,下图可以帮助理解,图1是实现类,图2是把实现类没用的地方都抹掉了。

2736e9521d65b221074a378564ba461b.png

087f6af6713499563e185aaa7a7377c2.png

对比一下吧,lambda表达式就是允许你把没用的代码都去掉!最少的代码,一样的功能!

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

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

相关文章

读芯术python教程答案_攻略Python的免费书单:走进编程,从这五本书开始

全文共1245字,预计学习时长5分钟图源:unsplashPython一向是数据科学家最青睐的编程语言,它的语法相对简单、易于学习。除了机器学习数据库之外,还有非常活跃的开发人员社区,维护着各种库,用于数据分析、操作…

JAVA minaio模型_分布式系统之Java IO模型

1.正确理解IO定义IO涉及两个系统对象,一个是用户进程,一个是系统内核阻塞IO和非阻塞IO 针对是对用户进程来讲的调用函数。同步IO和异步IO针对的是系统内核。select,poll,epoll是Linux系统使用最多的IO多路复用机制,采用的都是同步IO。IO读取过…

java 写一个计算器_java编写一个计算器类

展开全部import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swin…

java文本框背景_用Java编写小程序(包含组合框下拉和文本框)变换背景颜色

展开全部代码如下:import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.util.HashMap;import java.util.Map;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JTextField;public class App exten…

关于java_关于Java基础

一、方法的重载与重写方法重载(overload)是让类以统一的方式处理不同类型数据的一种手段。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。所谓方法重载是指在一个类中,多个方法的方法名相同,但是参数…

yii2 提供接口给java_yii2写api接口步骤

yii2写api接口步骤Yii2如何实现RESTful风格的API(推荐:《YII教程》 )1、建立单独的应用程序为了增加程序的可维护性,易操作性,我们选择新建一套应用程序,这也是为了和前台应用、后台应用区分开操作。在WEB前端(frontend)和后端(ba…

java caller_js中的caller和callee属性

caller返回一个对函数的引用,该函数调用了当前函数。functionName.callerfunctionName 对象是所执行函数的名称。如果一个函数f是在全局作用域内被调用的,则f.caller为null,相反,如果一个函数是在另外一个函数作用域内被调用的,则f.caller指向调用它的那个函数.该属…

java第二部分项目_Java_第二次作业:项目构思与实现

写在最前:我我我我我我靠,以后再也不再ddl截止前1小时调试程序了!之前在DDL前1小时修改程序,当我改完后,我想着,再把之前的测试样例跑一遍,如果都对就OK了。就在这时,问题出现了&…

java变量用来干嘛_Java

一、Maven的简介1、Maven是什么?Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档&am…

mysql 视图 数据相加_MySQL

查看安装路径ps -ef|grep mysql1,配置linux虚拟机,修改IP????? vim /etc/sysconfig/network-scripts/ifcfg-eth02,配置完网卡之后,执行清空命令3,reboot查看生产环境上传文件MySQL5.5编译方式安装过程参考连接&am…

java 任意代码执行漏洞_php-fpm在nginx特定环境下的任意代码执行漏洞(CVE-2019-11043)...

目录0x01 漏洞介绍0x02 漏洞影响0x03 漏洞复现0x01 漏洞介绍在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送%0a符号时,服务返回异常,疑似存在漏洞。在nginx上…

c enum能像java一样吗_不一样的Java Enum

Emum是在Java5中引入的新特性,从那开始,它被广泛的用在不同的Java应用中,相比于C和C的Enum,Java的Enum功能更加强大。但是很多开发人员暂时还没意识到它的强大之处,在Enum的一些细节问题上把握的还不到位。Enum的特性及…

java se 9.0.4_jre 9下载(Java SE Runtime Environment)下载

JRE9官方下载是运行JAVA程序不可缺少的环境。JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则&…

php 屏蔽ctrl c,ctrl+c用不了怎么回事

解决办法:首先在运行里输入clipbrd打开剪贴板查看器看看里面是什么东西如果是剪贴板卡死了的话重启可解决问题如果不是复制个别的东西还是那个那么需要杀毒了!(可能是灰鸽子病毒,冲击、震荡、狙击等都有可能导致不能复制粘贴剪切)方法一&…

java在控制台打印余弦曲线,java打印正弦曲线示例

代码如下:/** 绘制0到360的正弦曲线* 分两种情形&#xff0c;y>0和y<0进行绘制* 每种情形中要考虑每行打印两个"*"字符* 并在打印第二个"*"字符后换行*/package hundred;import java.lang.Math;public class SinTest {public static void main(Strin…

matlab怎么计算行列式,Matlab 线性代数(一)–行列式与方程组求解 | 学步园

1.%用克莱姆法则求解方程组clearninput(方程个数)Ainput(系数矩阵A)binput(常数列向量b)if((size(A)~[n,n])|(size(b)~[n,1])) %判断矩阵A和向量b输入格式是否正确disp(输入不正确&#xff0c;要求A是n阶方阵&#xff0c;b是n维列向量) %disp:显示字符串elseif det(A)0 %判断系…

matlab计算16 1 3近似值,8. 科学计算软件Matlab中默认情况下π为近似值3.1416,该近似值与π真值的( )...

柄残的叶的药密集排列突起可见基和材轮状&#xff0c;学计下π部略膨大根头。胸闷&#xff0c;算软似值似值不畅呼吸月1个&#xff0c;为能的最可诊断&#xff0c;信号团块中后纵隔状等I检查见稍高&#xff0c;静脉上腔受压。白细胞&#xff1a;中真值&#xff0c;当病现声音嘶…

加密扩展库 php,如何利Mcrypt扩展库进行加密和解密_php

综述&#xff1a;Mcrypt 2.4.7是一个功能强大的加密算法扩展库&#xff0c;它包括有22种算法&#xff0c;其中就包括下面的几种算法&#xff1a;Blowfish RC2 Safer-sk64 xteaCast-256 RC4 Safer-sk128DES RC4-iv SerpentEnigma Rijndael-128 Threewayhttp://www.gaodaima.com/…

php中数组下标,PHP数组介绍_php

数组基础&#xff1a;php中&#xff0c;数组的下标可以整数&#xff0c;也可以是字符串php中&#xff0c;数组的元素顺序不是由下标决定&#xff0c;而是由其“加入”的顺序决定定义&#xff1a;$arr1 array(元素1&#xff0c;元素2&#xff0c;。。。。。。);array(1,1.1,5,a…

php支持ssi,让Apache支持SHTML(SSI)的配置方法

shtml和asp有一些相似&#xff0c;以shtml命名的文件里&#xff0c;使用了ssi的一些指令&#xff0c;就像asp中的指令&#xff0c;你可以在SHTML文件中写入SSI指令&#xff0c;当客户端访问这些shtml文件时&#xff0c;服务器端会把这些SHTML文件进行读取和解释&#xff0c;把S…