Java8新特性的λ,函数式接口,StreamingAPI

  介绍

这篇文章将为大家详细讲解有关Java8新特性的λ,函数式接口,StreamingAPI,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

λ表达式

1。是对匿名内部类对象的一种格式的简化

2. Java8中引入了一个新的运算符”→“,称为箭头运算符,或者λ运算符

3。作用就是分割前后两部分的

4。左边:表示的是λ表达式的参数列表(接口中,定义的抽象方法的参数)

5。右边:表示的是方法的方法体,λ体

语法格式的书写

1。没有参数,也没有返回值

左面的小括号不能省,右边的大括号可以省略也可以不用省

 Java8新特性的λ,函数式接口,StreamingAPI”> <br/> </p> <p> 2。有一个参数,没有返回值</p> <p>有多个参数,没有返回值</p> <p>左边的括号可省可不省,右边的大括号可以省也可以不用省</p> <p> <img src=

3。接口中需要重写的方法内容有很多,需要给多句话的加上大括号

 Java8新特性的λ,函数式接口,StreamingAPI

注意事项:如果λ体中的语句有只有一句,那么大括号可以省略不写,如果大扩号中只有一条语句,并并且是返回语句,那么返回关键字可以省略不写

<强>函数式接口

λ表达式使用的前提,就是接口必须是函数式接口,如果在接口中,只有一个抽象方法,那么这个接口就是函数式接口,常用一个注解来检查当前接口是否是一个函数式接口@FunctionalInterface,如果不是函数式接口,则编译报错

<强>作用:

想表达的是一个方法的内容,由于方法不在任何类中,所有被称为函数,接口其实想表达的就一个函数的声明,接下来的使用这个接口的实现类对象,来表达一个函数的体现

<强>消费型接口:

抽象方法:空白接受(T T)

当某个函数可以接受一个数据,并且处理这个数据,处理完成之后,就不需要返回任何数据,这个函数需要当做数据来进行传递,就使用消费型接口

包cn.ujiuye.function;   进口java.util.function.Consumer;   进口cn.ujiuye.domin.Mobile;/* *   * @author liugang   *消费型接口方式   */公开课CustmoerTest {   公共静态void main (String [] args) {   移动m=新的移动(“华为“,3000);//lambad表达式实现赋值内部显然是对消费者接口的使用,故是对函数式接口编程的新东西   updateMobile (m x→x.setPrice (x.getPrice () + 1000));   System.out.println (m);   }//调用其使用的方法   私有静态孔隙updateMobile(移动m, Consumercon) {   for (int i=0;我& lt;3;我+ +){   con.accept (m);   }   }   }

<>强方法引用

1。写一个函数式接口时,方法的实现,已经被某个其他的对象实现了,就不需要在λ中了,再次调用这个实现,而可以那个直接定义好的方法了

2。格式

函数式接口:名称=对象名::方法名称

函数式接口:名称=类名::静态方法名

3。作用

把已经实现的当做一个数据,作为一个引用,赋值给某个函数式接口的引用,可以把这个引用当做方法的返回值,也可以作为一个实现类对象

 Java8新特性的λ,函数式接口,StreamingAPI

StreamingAPI

在jdk1.8中,提供了一个流类型,可以很方便的操作容器中的数据,不需要手动定义循环就可以完成对数据的过滤,输出及其其他的操作

流的类型的获取和常用方法

集合的获取:

调用流()方法,调回流对象

终止方法:foreach数

延迟方法:过滤器限制跳过等

包cn.ujiuye.stream;   进口java.util.ArrayList;   进口java.util.Collections;   进口并不知道;   进口java.util.stream.Stream;/* *   * @author liugang   *   */公开课StreamApiDemo03Demo03 {   公共静态void main (String [] args) {//定义一个集合,并获取流类型的数据   List列表=new ArrayList ();   集合。addAll(清单12 32,-13,50100);   Stream流=list.stream ();   流。forEach (x→system . out。println (x - 100));   .count System.out.println (list.stream () ());   }   }      包cn.ujiuye.stream;   进口java.util.ArrayList;   进口java.util.Collections;   进口java.util.stream.Stream;/* *   * @author liugang   *流中一些方法的使用   */公开课StreamApiDemo04 {   公共静态void main (String [] args) {   ArrayList

Java8新特性的λ,函数式接口,StreamingAPI