java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch

java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch对于中间操作和终端操作的定义,请看《JAVA8stream接口中间操作和终端操作》,这篇主要讲述的是stream的count,anyMatch,allMatch,noneMatch操作,我们先看下函数的定义longcount();booleananyMatch(Predicate<?superT>predicate);…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

对于中间操作和终端操作的定义,请看《JAVA8 stream接口 中间操作和终端操作》,这篇主要讲述的是stream的count,anyMatch,allMatch,noneMatch操作,我们先看下函数的定义

    long count();  
  
    boolean anyMatch(Predicate<? super T> predicate);  
  
    boolean allMatch(Predicate<? super T> predicate);  
  
    boolean noneMatch(Predicate<? super T> predicate);

count方法,跟List接口的size一样,返回的都是这个集合流的元素的长度,不同的是,流是集合的一个高级工厂,中间操作是工厂里的每一道工序,我们对这个流操作完成后,可以进行元素的数量的和;

剩下的三个方法,传入的都是Predicate的函数式接口,接口定义请看《JAVA8 Predicate接口》

anyMatch表示,判断的条件里,任意一个元素成功,返回true

allMatch表示,判断条件里的元素,所有的都是,返回true

noneMatch跟allMatch相反,判断条件里的元素,所有的都不是,返回true

下面,看几个例子

List<String> strs = Arrays.asList("a", "a", "a", "a", "b");
        boolean aa = strs.stream().anyMatch(str -> str.equals("a"));
        boolean bb = strs.stream().allMatch(str -> str.equals("a"));
        boolean cc = strs.stream().noneMatch(str -> str.equals("a"));
        long count = strs.stream().filter(str -> str.equals("a")).count();
        System.out.println(aa);// TRUE
        System.out.println(bb);// FALSE
        System.out.println(cc);// FALSE
        System.out.println(count);// 4

通过例子可以看到,变量aa的表达式,strs里的元素,任意有“a”,表示true

变量bb的表达式,strs里的元素,全部为“a”,表示true,否则false

变量cc的表达式,strs里的元素,全部不为“a”,表示true,否则false

——————–分割线—————————————

先看下如下代码

 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        boolean allMatch = list.stream().allMatch(e -> e.equals("a"));
        boolean anyMatch = list.stream().anyMatch(e -> e.equals("a"));
        boolean noneMatch = list.stream().noneMatch(e -> e.equals("a"));
        System.out.println(allMatch);// true
        System.out.println(anyMatch);// false
        System.out.println(noneMatch);// true
    }

最近,有小伙伴留言说,boolean allMatch = list.stream().allMatch(e -> e.equals("a"));

当list的为空集合时候,这个返回默认为true;按照实际的业务,理解这个的话,应该为false;然后网上搜索了一下,比较尴尬的是,很多都是抄下我之前的文章,秉承着,严谨的原则,查看了源码,下面是整个分析的过程;

详细看《java8 stream接口终端操作allMatch 当list为空集合的一些思考》

 

1.lambda表达式

《java8 Lambda表达式简介》

《java8 lambda表达式,方法的引用以及构造器的引用》

2.函数式接口

《java8 函数式接口简介》

《JAVA8 Function接口以及同类型的特化的接口》

《JAVA8 Consumer接口》

《JAVA8 Supplier接口》

《JAVA8 UnaryOperator接口》

《JAVA8 BiConsumer 接口》

3.stream接口操作

《java8 Stream接口简介》

《 java8 Stream-创建流的几种方式》

《JAVA8 stream接口 中间操作和终端操作》

《JAVA8 Stream接口,map操作,filter操作,flatMap操作》

《JAVA8 stream接口 distinct,sorted,peek,limit,skip》

《java8 stream接口 终端操作 forEachOrdered和forEach》

《java8 stream接口 终端操作 toArray操作》

《java8 stream接口 终端操作 min,max,findFirst,findAny操作》

《java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch》

《java8 srteam接口终端操作reduce操作》

《java8 stream接口 终端操作 collect操作》

4.其他部分

《java8 Optional静态类简介,以及用法》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183981.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • setTimeout()和setInterval()在用法上有什么区别?_clearinterval函数不生效

    setTimeout()和setInterval()在用法上有什么区别?_clearinterval函数不生效setInterval:setInterval(function(){cc.log("dosometing")},3000)//间隔3秒执行一次,可代替schedule,区别就是setInterval以毫秒计时,而schedule以秒计时settimeout :settimeout(function(){cc.log("dosometing")},3000)//3秒后执行一次且…

    2022年10月4日
    0
  • centos7 本地yum源_centos6更换为阿里源

    centos7 本地yum源_centos6更换为阿里源一、centos7配置yum源yum源分为本地yum源和网络yum源1、配置本地yum源步骤一:在centos虚拟机中挂载光盘1.创建挂载点目录[root@localhost~]#mkdir/mnt/cdrom[root@localhost~]#df/mnt/cdrom文件系统1K-块已用可用已用%挂载点/dev/sda33951733677184163179892020%/2.挂载光盘[root@loc

    2022年8月13日
    7
  • pycharm开启自动补全_python代码补全插件

    pycharm开启自动补全_python代码补全插件在使用python时候我们可能更倾向于能够使用到自动补全代码的功能在一段时间的找寻和使用过程中,发现了几种能补全代码的插件和方法吧pycharm中TabNine插件 这个我感觉还能用吧~啧百度kite官网下载kite插件百度aiXcoder插件下载aiXcoder插件GitHub开源项目1.首先第一个TabNine的插件 亲测了一段时间,感觉很一般 如果想体验一下也不是不行 安装插件过程如下: pycharm编译器->File->Settings

    2022年8月27日
    3
  • java 基本类型 引用_语法重点

    java 基本类型 引用_语法重点Java引用类型引用数据类型:数组,类,接口。class作为成员变量类作为成员变量时,对它进行赋值的操作,实际上,是赋给它该类的一个对象。在这里插入代码片interface作为成员变量在这里插入代码片interface作为方法参数和返回值类型接口作为参数时,传递它的子类对象。接口作为返回值类型时,返回它的子类对象。在这里插入代码片…

    2022年10月19日
    2
  • 初识ABP vNext(10):ABP设置管理

    初识ABP vNext(10):ABP设置管理

    2020年11月20日
    261
  • Vue自定义标签[通俗易懂]

    Vue自定义标签[通俗易懂]简介主要讲解vue中如何定义自定义标签。自定义标签使用vue的配置对象中的directives属性进行配置。比如下面代码定义一个自定义标签v-big,可以把绑定的表达式乘以十倍渲染到元素的text区,相当于v-text,只是他表达式要数字并且会乘以10倍后渲染。<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>自定义指令</tit

    2025年6月22日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号