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

举报
扎哇太枣糕 发表于 2022/05/19 07:39:42 2022/05/19
【摘要】 ​目录1 Lambda表达式( -> )​ 2 方法引用( :: )3 Stream流        接下来介绍的三种语法叫:Lambda表达式 方法引用 stream流,这三种语法的使用要有特定条件,在一定条件下借助这三种语法可以使代码十分简单且优雅,但是不要舍本逐末为了使用而使用,这样的话可能会起到相反的作用。其实大多情况下这种代码并不是十分常用,但是如果想要阅读源码或者说别人的代码,就...

目录

1 Lambda表达式( -> )

​ 2 方法引用( :: )

3 Stream流


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

1 Lambda表达式( -> )

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

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

    被重写方法的方法体;

}

Lambda表达式的简化写法:

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

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

编辑

collections排序的Lambda写法 

编辑 2 方法引用( :: )

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

静态方法的引用

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

类名::静态方法名 

编辑   编辑

实例方法的引用

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

对象名::实例方法名 

编辑

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

编辑  

特定类型方法的引用

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

调用者的类型::方法

编辑

构造器的引用

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

构造器::new

编辑

3 Stream流

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

Stream流获取

collection集合:集合名.stream()

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

        集合名.values().stream()

      集合名.entrySet().stream()

数组:Arrays.stream(集合名)

编辑

常用API:

编辑

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

stream流对象转集合、数组

编辑

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。