boolean allMatch​(Predicate<? super T> predicate)

字面意思就是全部匹配。作用就是定义一个函数参数对集合中全部元素进行计算,如果返回结果都是true那最终结果为true(还有一种情况就是集合元素为空也返回true),如果有一个或多个元素计算结果为false那最终结果为false。这个方法是一个短路的中间操作,既然是短路操作,那就不需要执行完流中全部元素,只要达到要求就中断操作。看一个例子:

void stream_allMatch() {List<Integer> list = List.of(2,5,8,9,4,20,11,43,55);boolean bo = list.stream().allMatch(a -> a>1);System.out.println(bo);boolean bo2 = list.stream().allMatch(a -> a>10);System.out.println(bo2);}

运行结果:

true

false

第一个输出很明显集合所有的整数都大于1,因此方法返回值为true。

第二个输出false是因为集合中存在一个或1个以上小于10的元素,因此方法返回值为false。

我们在来验证一下这个方法的短路操作:

boolean boo = Stream.of(5,7,3,8,4,7,8,1,9,4).peek(System.out::print).allMatch(a -> a>3);System.out.println("\n"+boo);

运行输出:

573

false

第一个元素是5,大于3满足条件继续执行下一个元素,第二个元素是7也大于3满足条件因此再继续执行下一个元素,第三个元素是3不满足大于3的条件,因此中断操作返回结果false。

因为我们在流中的每个元素上都绑定了一个打印方法,只要后续操作使用(官方文档用消费这个词)了这个元素就会触发绑定的打印操作把当前元素打印出来,根据上面的步骤流中的元素执行到第三个,因此打印输出了3个元素。

此代码很好的验证了allMatch方法存在的短路操作。

stream.allMatch相关推荐

  1. java8 .stream().anyMatch / allMatch / noneMatch用法

    java8 stream接口终端操作 anyMatch,allMatch,noneMatch anyMatch:判断的条件里,任意一个元素成功,返回true allMatch:判断条件里的元素,所有的 ...

  2. 巧用Stream优化老代码,太清爽了!

    [文章来源]https://sourl.cn/DNU3FV Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简 ...

  3. 万字详解,JDK1.8新特性的Lambda、Stream和日期的使用详解

    前言 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScr ...

  4. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...

  5. 使用 Stream API 高逼格 优化 Java 代码!

    作者 | 何甜甜在吗 来源 | https://juejin.cn/post/6844903945005957127 使用Stream API优化代码 Java8的新特性主要是Lambda表达式和流, ...

  6. java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧

    函数式编程优势"函数第一位",即函数可以出现在任何地方. 可以把函数作为参数传递给另一个函数,还可以将函数作为返回值. 让代码的逻辑更清晰更优雅. 减少了可变量(Immutable ...

  7. Java 8 - Stream流骚操作解读

    文章目录 分类 中间操作 终端操作 使用Stream流 筛选和切片 用谓词筛选 filter 筛选各异的元素 distinct 截短流 limit 跳过元素 skip 映射 对流中每一个元素应用函数 ...

  8. java8 stream遍历_Java8新特性:Stream流详解

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

  9. java 8 stream()

    2019独角兽企业重金招聘Python工程师标准>>> 1. 流的基本概念 1.1 什么是流? 流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合. ...

最新文章

  1. 栈的输出_栈和队列--十进制转化为二进制
  2. Windows下Git Bash的基本使用
  3. confluence统计用户文章_公众号流量主后台数据查看及统计分析
  4. C++常用数据结构入门
  5. java自学手记——继承
  6. 北京普源示波器常见问题
  7. js 20160810
  8. webpack之DefinePlugin使用
  9. MsSql正反表达式
  10. 一文读懂最强中文NLP预训练模型ERNIE
  11. mmap函数_分析由 mmap 导致的内存泄漏
  12. 百度地图mysql打点_关于百度地图连接MYSQL的问题,谢谢啦!
  13. Redis 分布式锁遇到的序列化问题
  14. java分桃子_Java经典编程题分桃子
  15. 《An Introduction to Ray Tracing》——2.2 Ray/Sphere Intersection And Mapping
  16. Java方法重载注意事项
  17. Scan Context 学习记录
  18. 【Linux】/bin/sh、/bin/bash、/bin/dash、init=/sysroot/bin/bash(sh) 、init=/bin/bash(sh) 的区别
  19. React兼容IE8
  20. python之红楼梦词频统计并生成图云

热门文章

  1. Android仿微信图片浏览
  2. mtk camera移植
  3. python培训费用大概多少 学习技巧有哪些?
  4. 【图像识别】基于BP神经网络实现手写体大写字母识别附matlab代码
  5. 2021年中国后座椅信息娱乐市场趋势报告、技术动态创新及2027年市场预测
  6. HTK standard lattice format
  7. Android删除UIM卡联系人
  8. Oracle数据库设置密码永不过期
  9. 万字长文,详尽PyCharm 教程
  10. 一起来学习在Ubuntu上安装Budgie桌面