吊打Java面试官之Lambda表达式 Stream API_第1页
吊打Java面试官之Lambda表达式 Stream API_第2页
吊打Java面试官之Lambda表达式 Stream API_第3页
吊打Java面试官之Lambda表达式 Stream API_第4页
吊打Java面试官之Lambda表达式 Stream API_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第吊打Java面试官之Lambda表达式StreamAPI目录一、jdk8新特性简介二、Lambda表达式简单理解一下Lambda表达式Lambda表达式的使用三、函数式接口1.什么是函数式接口2.如何理解函数式接口3.Java内置四大核心函数式接口四、方法引用与构造器引用方法引用构造器引用和数组引用五、StreamAPI1.StreamAPI的说明2.为什么要使用StreamAPI3.创建Stream的四种方式4.Stream的中间操作及其测试5.Stream的终止操作及其测试六、Optional类的使用Optional类的重要意义:

一、jdk8新特性简介

二、Lambda表达式

简单理解一下Lambda表达式

publicclassLambdaTest{

@Test

publicvoidtest1(){

Runnabler1=newRunnable(){

@Override

publicvoidrun(){

System.out.println("我爱北京天安门");

r1.run();

System.out.println("******************************************");

Runnabler2=()-System.out.println("我爱北京故宫");

r2.run();

@Test

publicvoidtest2(){

ComparatorIntegercom1=newComparatorInteger(){

@Override

publicintcompare(Integero1,Integero2){

returnIpare(o1,o2);

intcompare1=pare(12,21);

System.out.println(compare1);

System.out.println("**********************************");

//Lambda表达式的写法

ComparatorIntegercom2=(o1,o2)-Ipare(o1,o2);

intcompare2=com2.compare(32,21);

System.out.println(compare2);

System.out.println("************************************");

//方法引用

ComparatorIntegercom3=Integer::compare;

intcompare3=pare(32,21);

System.out.println(compare2);

}

Lambda表达式的使用

1.举例:(o1,o2)-Ipare(o1,o2);

2.格式:

-:lambda操作符或箭头操作符

-:左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)

-:右边:lambda体(其实就是重写的抽象方法的方法体)

3.Lambda表达式的使用:(分为6种情况介绍)

总结:(重点看这个)

-左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda形参列表只有一个参数,其一对()也可以省略

-右边:lambda体应该使用一对{}包裹;如果lambda体只有一条执行语句(可能时return语句),可以省略这一对{}和return关键字

4.Lambda表达式的本质:作为函数式接口的实例

5.如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口

publicclassLambdaTest1{

//语法格式一:无参,无返回值

@Test

publicvoidtest1(){

Runnabler1=newRunnable(){

@Override

publicvoidrun(){

System.out.println("我爱北京天安门");

r1.run();

System.out.println("******************************************");

Runnabler2=()-{

System.out.println("我爱北京故宫");

r2.run();

//语法格式二:Lambda需要一个参数,但是没有返回值。

@Test

publicvoidtest2(){

ConsumerStringcon=newConsumerString(){

@Override

publicvoidaccept(Strings){

System.out.println(s);

con.accept("谎言和誓言的区别什么?");

System.out.println("**********************************");

ConsumerStringcon1=(Strings)-{

System.out.println(s);

con1.accept("一个是听得人当真了,一个是说的人当真了");

//语法格式三:数据类型可以省略,因为可由编译器推断得出,称为"类型推断"

@Test

publicvoidtest3(){

ConsumerStringcon1=(Strings)-{

System.out.println(s);

con1.accept("一个是听的人当真了,一个是说的人当真了");

System.out.println("****************************");

ConsumerStringcon2=(s)-{

System.out.println(s);

con2.accept("一个是听的人当真了,一个是说的人当真了");

@Test

publicvoidtest4(){

ArrayListStringobjects=newArrayList();//类型推断(泛型)

int[]arr={1,2,3};//类型推断(int[]arr=newint[]{1,2,3};)

//语法格式四:Lambda若只需要一个参数时,参数的小括号可以省略

@Test

publicvoidtest5(){

ConsumerStringcon1=(s)-{

System.out.println(s);

con1.accept("一个是听的人当真了,一个是说的人当真了");

System.out.println("****************************");

ConsumerStringcon2=s-{

System.out.println(s);

con2.accept("一个是听的人当真了,一个是说的人当真了");

//语法格式五:Lambda需要两个或两个以上的参数,多条执行语句,并且可以有返回值

@Test

publicvoidtest6(){

ComparatorIntegercom1=newComparatorInteger(){

@Override

publicintcompare(Integero1,Integero2){

System.out.println(o1);

System.out.println(o2);

returnIpare(o1,o2);

System.out.println(pare(12,21));

System.out.println("*******************************");

ComparatorIntegercom2=(o1,o2)-{

System.out.println(o1);

System.out.println(o2);

returnpareTo(o2);

System.out.println(pare(12,6));

//语法格式六:当Lambda体只有一条语句时,return与大括号若有,都可以省略

@Test

publicvoidtest7(){

ComparatorIntegercom1=(o1,o2)-{

returnpareTo(o2);

System.out.println(pare(12,6));

System.out.println("******************************");

ComparatorIntegercom2=(o1,o2)-pareTo(o2);

System.out.println(pare(12,21));

@Test

publicvoidtest8(){

ConsumerStringcon1=s-{

System.out.println(s);

con1.accept("一个是听的人当真了,一个是说的人当真了");

System.out.println("*********************************");

ConsumerStringcon2=s-System.out.println(s);

con2.accept("一个是听的人当真了,一个是说的人当真了");

}

三、函数式接口

1.什么是函数式接口

2.如何理解函数式接口

总结:只有函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论