【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流

目录

1 Lambda表达式( -> )

​ 2 方法引用( :: )

3 Stream流


        接下来介绍的三种语法叫:Lambda表达式 方法引用 stream流,这三种语法的使用要有特定条件,在一定条件下借助这三种语法可以使代码十分简单且优雅,但是不要舍本逐末为了使用而使用,这样的话可能会起到相反的作用。其实大多情况下这种代码并不是十分常用,但是如果想要阅读源码或者说别人的代码,就需要知道这三种语法的使用规范了,这就是学习三种语法的目的:不是为了装逼,而是为了不让别人拿这个在我们面前装逼。

1 Lambda表达式( -> )

    Lambda表达式的作用就是为了简化函数式接口的匿名内部类的一种代码写法,函数式接口就是内部只有一个抽象方法的接口,函数式接口会使用@FunctionalInterface注解标明,Lambda表达式的格式如下:

(匿名内部类被重写方法的形参列表)  ->{

    被重写方法的方法体;

}

Lambda表达式的简化写法:

  • 如果重写方法的方法体只有一行代码,同时省略大括号和分号不写,如果这行代码是个return语句的话还要省略return不写
  •  形参列表的参数类型也可省略不写
  • 如果只有一个参数的话可以同时省略参数类型和小括号

实现Runnable接口创建线程的Lambda写法

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第1张图片

collections排序的Lambda写法 

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第2张图片 2 方法引用( :: )

    方法引用是为了进一步的简化Lambda表达式的写法,主要有以下四种引用形式:静态方法的引用、实例方法的引用、特定类型方法的引用、构造器的引用

静态方法的引用

⚠  被引用静态方法的参数列表要和函数式接口中抽象方法的参数列表保持一致

类名::静态方法名 

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第3张图片   【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第4张图片

实例方法的引用

⚠  被引用实例方法的参数列表要和函数式接口中抽象方法的参数列表保持一致

对象名::实例方法名 

最经典的实例方法就是输出语句

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第5张图片  

特定类型方法的引用

⚠  被引用方法的参数列表中的第一个参数作为后面返回语句中方法的调用者

调用者的类型::方法

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第6张图片

构造器的引用

 ⚠  返回值是使用一个构造器创建对象

构造器::new

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第7张图片

3 Stream流

Stream流是用来简化集合或者数组中一些API的代码写法。要想使用Stream流,需要先获取到stream流对象才能使用Stream流的API。最终处理好的stream流对象还是应该转换为集合。

Stream流获取

collection集合:集合名.stream()

Map集合:集合名.keySet().stream()

        集合名.values().stream()

      集合名.entrySet().stream()

数组:Arrays.stream(集合名)

【Java从入门到头秃专栏 7】语法篇(六) :Lambda表达式(->) 方法引用(::) stream流_第8张图片

常用API:

 ⚠  forEach方法没有返回值、count方法返回值是long型,只有返回值是stream对象的才能一直使用链式编程一直调用下去,只要出现方法的返回值不是stream流对象的话,就不能采用链式编程。

stream流对象转集合、数组

 ⚠  一个流对象只能被转一次,想要再转就要再次创建流

上一篇:

下一篇:

你可能感兴趣的:(Java,SE基础教程,java,开发语言,后端)