目录

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流对象转集合、数组

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

上一篇:

下一篇:

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

  1. 【Java从入门到头秃专栏 】(三) 控制流程 Math Date DateFormat Calendar System BigDecimal Random

    目录 1 控制流程 2 Math类 3 Date类 4 DateFormat类 5 Calendar类(日历类) 6 System类 7 BigDecimal类 8 Random类(随机数) 1 控制 ...

  2. 【Java从入门到头秃专栏 8】语法篇(七) :反射 动态代理 注解

    目录 1 反射机制 2 反射的应用:动态代理 3 注解 1 反射机制 反射机制(Reflect Machanism),是指在程序运行期间借助Reflect API获取任何类的内部信息,并能直接操作对象 ...

  3. 【Java从入门到头秃专栏 4】语法篇(三) :字符串 数组

    目录 1 String字符串 2 数组 1 String字符串 Java没有内置的字符串类型,而是在Java类库中提供了一个预定义类--String. 在Java中把每一个使用双引号括起来的字符串都看 ...

  4. 【Java从入门到头秃专栏 6】语法篇(五) :多线程 线程池 可见、原子性 并发包 Lambda表达式

    目录 1 多线程 1.1 基本概念 1.2 创建线程的三种方式 1.4 解决线程安全问题的三种方法 1.5 线程通信 1.6 线程状态 2 线程池 2.1线程池的概念 2.2 创建并提交任务 3 可见 ...

  5. 【Java从入门到头秃专栏 】(一)学在Java语法之前

    目录 1 初识Java 2 Java环境JDK 3 Java规范 1 初识Java Java是美国的sun(Stanford University Network)公司在1995年推出的一门计算机高级 ...

  6. 【Java从入门到头秃专栏 】(二) 注释 数据类型 变量 常量 关键字 标识符 运算符 输入输出

    目录 1 注释 2 数据类型 3 变量与常量 4 关键字.标识符 5 运算符 6 键入值.输出值 1 注释 注释就是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便大家更加容易理解程序. ...

  7. java(九)-方法引用, Stream流,File类 , 递归 ,字节流

    day09[方法引用.Lambda表达式.Stream流] 今日目标 线程状态 等待与唤醒 Lambda表达式 Stream流 教学目标 能够说出线程6个状态的名称 能够理解等待唤醒案例 能够掌握La ...

  8. Java编程入门与应用 P210 例8-8——演示创建实例的方法

    Java编程入门与应用 P210 例8-8--演示创建实例的方法 显式转换和隐式转换的概念 /*** Java编程入门与应用 P210 例8-8--演示创建实例的方法** 显式转换和隐式转换的概念*/ ...

  9. Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)

    Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...

最新文章

  1. python环境配置opencv_【Python】python2.7 安装配置OpenCV2
  2. Android解析SVG
  3. 启动失败_启动失败了?
  4. 100件不可思议的事
  5. 嵌入式C语言static关键字
  6. w7系统计算机更改用户名,Win7怎么更改用户名
  7. 0x80004005错误代码解决方法,哪种方法快捷有效?
  8. 禁止div被拖动 css,【Web前端问题】div在拖动时出现禁止图标
  9. 关于 Alpine Docker 镜像漏洞 CVE-2019-5021
  10. 第四章:Android灯光系统(4)-电池灯
  11. python打印皮卡丘步骤_编程作战丨如何利用python绘制可爱皮卡丘?
  12. 商业银行经营特点与三性原则:安全性、流动性、盈利性
  13. 2022年汽车驾驶员(技师)试题及在线模拟考试
  14. java如何获取一个对象的大小
  15. 卫星轨道和两行数据TLE
  16. 你不知道的互联网公司招聘黑话大全
  17. 最简单的共享列表服务器KissLists
  18. C语言结构体变量 指针以及对结构体成员的访问
  19. 夏天一直流汗,做近视矫正手术会有影响吗?
  20. 水の三角(超级卡特兰数/大施罗德数)

热门文章

  1. android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
  2. C语言 ##__VA_ARGS__ - C语言零基础入门教程
  3. C语言注释与C++注释的相互转换
  4. mysql 数据修改记录日志_mysql对数据的更新操作记录在哪个日志中?
  5. axios传数组到后台_我是如何让公司后台管理系统焕然一新的
  6. vb mysql_VB连接MYSQL实例
  7. java mvel_MVEL实现java直接根据公式计算结果
  8. java处理请求的流程_Java Spring mvc请求处理流程详解
  9. 云存储技术-Zookeeper集群的安装
  10. convert.todatetime指定日期格式_JDK1.8新增日期时间类型