• One bite of Stream(2)


    查询与匹配

    Stream提供了allMatch(), anyMatch(), noneMatch(), findFirst(), findAny()功能,用于实现条件匹配与查询,一起来看看。

    anyMatch()

    anyMatch用于确认“有没有符合条件的元素?

    有->true->至少有一个符合要求

    没有->false->均不符合要求

    1. // 有没有漂亮姑娘?
    2. boolean result = girls.stream().anyMatch(ele -> ele.isBeautiful());

    allMatch()

    allMatch()用于确认“是不是每一项都符合条件?

    所有元素均符合->true

    只要有一项不符合->false

    1. // 是不是每个姑娘都很漂亮?
    2. boolean result = girls.stream().allMatch(ele -> ele.isBeautiful());

    noneMatch()

    noneMatch()用于确认“是不是所有的均不符合条件?”, 它是allMatch()的全否定

    所有元素均不满足->true

    有满足条件的->false

    1. // 是不是没有不漂亮的姑娘?
    2. // 是不是每个姑娘都很漂亮?
    3. boolean result = girls.stream().noneMatch(ele -> !ele.isBeautiful());

    findAny()

    找到符合条件的任意一个元素。

    1. // 找到任意一个身高大于170的姑娘
    2. Optional girl = girls.stream()
    3. .filter(ele->ele.getHeight() > 170)
    4. .findAny();

    当Stream中有满足条件的元素时,会返回任意一个满足条件的元素,否则Optional中没有元素。

    Optional属于可空类型,包含几个常用方法:

    get()如果存在则返回,否则抛出异常

    isPresent()判断是否存在元素

    ifPresent(Consumer)如果存在则执行

    orElse(T)如果不存在则返回给定值

    findFirst() 

    与findAny()类似,但返回第一个满足条件的元素,一般这个比较常用

    1. Optional firstSquare = someNumbers.stream()
    2. .map(x -> x * x)
    3. .filter(x -> x % 3 == 0)
    4. .findFirst();

    返回值仍然是可空类型。

  • 相关阅读:
    vue全局设置传值到后台不能为null
    深入理解并发和并行
    安全漏洞-linux漏洞修复命令
    不清楚的照片如何变清晰?教你几招变清晰的方法
    JavaScript 69 JavaScript Web API 69.2 JavaScript 验证 API
    Linux线程安全
    罗胖关于学习的观点
    【C++】C++ 类中的 this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )
    从JVM方面解释java传递问题
    Linux-进程控制
  • 原文地址:https://blog.csdn.net/Day_and_Night_2017/article/details/125881853