当前位置 > it书童 > java > 正文

流的终端操作

java it书童 2021-01-14 16:13:43 0赞 0踩 466阅读 0评论

匹配

allMatch 只要有一个不符合条件,就中断

/**
* allMatch 终端操作,短路操作
* 只要有一个不符合条件,就中断
*/
@Test
public void allMatchTest() {
    boolean match = list.stream()
        .peek(sku -> System.out.println(sku.getSkuName()))
        .allMatch(sku -> sku.getTotalPrice() > 100);
    System.out.println(match);
}

anyMatch 只要有一个满足条件,就返回 true

/**
* anyMatch 终端操作,短路操作
* 只要有一个满足条件,就返回 true
*/
@Test
public void anyMatchTest() {
    boolean match = list.stream()
        .peek(sku -> System.out.println(sku.getSkuName()))
        .anyMatch(sku -> sku.getTotalPrice() > 100);
    System.out.println(match);
}

noneMatch 所有都不满足条件才返回 true

/**
* noneMatch 终端操作
* 所有都不满足条件才返回 true
*/
@Test
public void noneMatchTest() {
    boolean match = list.stream()
        .peek(sku -> System.out.println(sku.getSkuName()))
        .noneMatch(sku -> sku.getTotalPrice() > 10000);
    System.out.println(match);
}

查找

/**
* 找到第一个
*/
@Test
public void findFirstTest() {
    Optional<Sku> optional = list.stream()
        .findFirst();
    System.out.println(optional.get());
}


/**
* 找到任何一个,串行时也 findFirst 无区别,并行时可能获取任意一个
*/
@Test
public void findAnyTest() {
    Optional<Sku> any = list.stream()
        .findAny();
    System.out.println(any.get());
}

统计

/**
* max的使用
* mapToDouble 将元素映射为 Double 类型元素
*/
@Test
public void maxTest() {
    OptionalDouble max = list.stream()
        // 获取总价
        .mapToDouble(Sku::getTotalPrice)
        .max();
    System.out.println(max.getAsDouble());
}

/**
* 最小值
*/
@Test
public void minTest() {
    OptionalDouble min = list.stream()
        .mapToDouble(Sku::getTotalPrice)
        .min();
    System.out.println(min.getAsDouble());
}

/**
* 获取到流中的所有个数
*/
@Test
public void countTest() {
    long count = list.stream().count();
    System.out.println(count);
}
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/1024