jdk1.8新特性(一)-函数式

1.0 Lambda表达式

  Lambda表达式的标准格式为:格式说明:

    1. 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
    2. ->是新引入的语法格式,代表指向动作。
    3. 大括号内的语法与传统方法体要求基本一致。

 

  在Lambda标准格式的基础上,使用省略写法的规则为:

    1. 小括号内参数的类型可以省略;
    2. 如果小括号内有且仅有一个参,则小括号可以省略;
    3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

1.1 函数式的概念

  函数式接口在java中是指:有且仅有一个抽象方法的接口,适用于函数式编程的接口,在Java中体现就是Lambda,所以函数式接口就是

可以适用于Lambda使用的接口。

  四个常用的接口

    supplier 生产型接口 get

    consumer 消费型接口 accept   andThen

    precidate判断型接口 test    and or negate

    function转换型接口 apply andThen

2.1Stream流

  流的获取

    所有collection类型集合可以通过stream()方法获取流

    Stream接口的静态of方法,方法参数为可变参数,我们可以传递一个数组

  常见方法

    延迟方法:返回值仍然是流对象,并没有执行

    终结方法:返回值不是流对象,执行,如 count和forEach

    forEach:传入的是消费型接口

    filter:传入的是判断型接口

    map:传入的转换型接口

 

    注意:流只能使用一次,例如调用fifter生成下一个流后,本流关闭,不能第二次调用

    count:返回值long类型,统计个数(终结方法)

    limit:只取前几个

    skip:只取后几个

    concat:将两个流拼接为一个流(Stream静态方法)

3.1方法引用

    如果lambda要表达的方案已存在可以通过::来引用

      使用对象名引用成员方法 System.out::print    输出

      通过类名引用静态方法Math::abs        简单改造

      通过super引用父类的成员方法super::sayHello  ()->super.sayHello()  父类方法

      通过this引用本类的成员方法this::buyHouse  ()->this.buyHouse()    子类方法

      类的构造器引用Person::new 自动选择参数     创建对象

      数组的构造器引用 int[]::new   自动选择参数      创建数组

      

 

    

    

 

posted @ 2019-09-25 13:12  helloworldmybokeyuan  阅读(635)  评论(0编辑  收藏  举报