java多线程(8):Lamda表达式
- λ希腊字母表中排序第十一位的字母,英语名称为Lambda
- 避免匿名内部类定义过多
- 其实质属于函数式编程的概念
new Thread(()->System.out.println(“多线程学习。。。。”)).start()
为什么要使用lambda表达式
- 避免匿名内部类定义过多
- 可以让你的代码看起来很简洁
- 去掉了一堆没有意义的代码,只留下核心的逻辑。
也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了
理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在
函数式接口的定义:
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
通过以下代码推导lambda表达式的演变过程,如下:
1 从普通类到lambda表达式的严管过程
(1)普通接口类实现
package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {ILike like = new Like();like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}//2.实现
class Like implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda");}
}
(2)静态内部类实现
package xiong.demo3;public class TestLambda1 {//3.静态内部类static class Like2 implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda2");}}public static void main(String[] args) {ILike like = new Like2();like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}
(3)局部内部类实现
package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {//4.局部内部类class Like3 implements ILike{@Overridepublic void lambda() {System.out.println("I like lambda3");}}ILike like = new Like3();like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}
(4)匿名内部类实现
package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {//5.匿名内部类,没有类的名称,必须借助接口或者父类ILike like = new ILike() {@Overridepublic void lambda() {System.out.println("I like lambda4");}};like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}
(5)用lambda简化
package xiong.demo3;public class TestLambda1 {public static void main(String[] args) {//6.用lambda简化ILike like = ()->{System.out.println("I like lambda5");};like.lambda();}
}
//1.定义一个函数式接口
interface ILike{void lambda();
}
2 lambda表达式的变化
public class TestLambda2 {public static void main(String[] args) {ILove love = (int a)->{System.out.println("I love you-->"+a);};love.love(520);//简化1 参数类型love = (a)->{System.out.println("I love you-->"+a);};love.love(521);//简化2 简化括号love = a->{System.out.println("I love you-->"+a);};love.love(522);//简化2 简化花括号love = a->System.out.println("I love you-->"+a);;love.love(523);}
}
//函数式接口
interface ILove{void love(int a);
}
总结
- lambda表达式只能在有一行代码的情况下才能简化成一行,如果有多行,那么就用代码块包裹。
- 前提是接口为函数式接口 。
- 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。
java多线程(8):Lamda表达式相关推荐
- 8、多线程:Lamda表达式
lamda表达式推导过程: package com.zjl;/*** Created by zjl* 2020/11/17**/ /* * 推导lamda表达式 * */ public class T ...
- Java多线程:Lambda 表达式
什么是Lambda 表达式 Lambda 表达式,也可称为闭包,它是Java 8 发布的最重要新特性. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). 使用 Lambda 表 ...
- Java基础知识——lamda表达式和函数式接口
文章目录 一.Lambda表达式 二.函数式接口 2.1 函数式接口作用 2.2 常用函数式接口--Supplier接口 2.3 常用函数式接口--Consumer接口 2.4 常用函数式接口--Pr ...
- 【Java代码】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写【去除外层循环:可用于Map对象中的key全部转化为大写或者小写】
why 事情的缘由是这样的,我们有两个平台,一个使用Oracle,另一个使用GreenPlum,查询结果封装成Map对象,如果使用相同的查询语句,Oracle的key是大写的,GreenPlum的ke ...
- Java --Lamda表达式
Lamda:属于函数式编程的概念: interface IMessage {public void print() ; } public class TestDemo {public static v ...
- java构造函数传参_java 构造函数 , 参数传递 , lamda表达式
1. java 子类中必须显式或者隐式的调用父类的构造方法,原因是双亲委派机制.java 在创建一个对象是,会在构造方法中依次向上调用父类的构造方法. 为了找到父类的构造方法,所以子类应显式或者隐式 ...
- java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个电视购物项目后台采用java1.8编写,有些业务复杂的地方,使用lamda表达式可以简化开发 ...
- Java回调的四种写法(反射、直接调用、接口调用、Lamda表达式)
1. 引言 在计算机程序设计中,回调函数,简称回调(Callback),是指通过函数参数传递到其他代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 以上是维基百科对&qu ...
- java之Lamda表达式的介绍
Lamda表达式: λ希腊字母表中排序第11位的字母,英文名称为Lambda,它Lambda表达式是Java SE 8中一个重要的新特性,允许通过表达式来代替功能接口,它与其他方法相同,提供了一个正常 ...
- Java多线程——Thread Runnable源码解析
Java多线程的两种实现方法大家都应该知道了:继承Thread的子类实例化和实现Runnable接口用这个接口实现类去创建Thread实例. Java的线程在Linux平台上使用的是NPTL机制,JV ...
最新文章
- 阿里云护航罗振宇2018“时间的朋友”跨年演讲,与千万观众一起跨年
- 使用VMware桥接模式组建局域网测试MSMQ(二)
- 两个inline-block消除间距和对齐(vertical-align)
- 学习计算机游戏编程,在线游戏学编程,游戏编程汇总
- 《Oracle高性能自动化运维》一一3.3 Redo产生场景
- React 项目开发问题积累
- 比特币可视化工具_这个比特币交易“可视化”网站,用一辆公交车带你“上车”...
- 有没有跟新型肺炎确诊患者同乘车?百度可查!
- 极光推送java服务器端_极光推送服务器端(JAVA)
- C++基础::string(二)
- 小米3c虚拟服务器,小米路由器3C固件逆向与测评-新手向
- java调用百度api完成人脸识别
- 国内外公有云对比:功能介绍、性能测试
- 梧桐计划发布!百度智能云携手合作伙伴共创“云智一体”繁荣新生态
- 放不下的原理_通俗易懂,几张图看懂大数据存储和计算原理
- Java电商平台-电商订单系统全解析
- 一句话+一张图——说清楚Aprioir关联规则算法
- Python:通过turtle 画樱花树
- C语言实验——用*号输出字母C的图案
- 数据仓库系列(一)什么是维度建模以及维度建模的基本要素