• 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();

    返回值仍然是可空类型。

  • 相关阅读:
    Strongswan:gcrypt-ikev2/rw-cert测试浅析
    MyBatis-plus超神用法--一文带你玩转MP
    【计算机视觉】相机模型&立体视觉
    【C\C++】内存分配 和 动态内存管理方式
    《算法笔记》图专题
    字符串的常用方法-增删改查、转换方法split
    【每日一题】设计循环队列(C语言)
    怎样查询服务器位置和IP地址?
    matlab图像类型的转换九种
    hive零基础入门
  • 原文地址:https://blog.csdn.net/Day_and_Night_2017/article/details/125881853