11.Java8新特性_Stream_查找与匹配

Stream的终止操作

终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer,甚至是void

 

package com.sggeleven;

import com.sggthree.Employee;
import com.sun.org.apache.xpath.internal.operations.Bool;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;

public class TestStreamAPI4 {
    List<Employee> employees = Arrays.asList(
            new Employee("李欣欣",24,13000.10),
            new Employee("孟宇",26,15000.0),
            new Employee("李小慧",30,20000.77),
            new Employee("李小飞",28,500.00)
            );
    /*
    查找与匹配
    allMatch - 检查是否匹配所有元素
    anyMatch - 检查是否至少匹配一个元素
    noneMatch - 检查是否没有匹配所有元素
    findFirst - 返回第一个元素
    findAny - 返回当前流中的任意元素
    count - 返回流中元素的总个数
    max - 返回流中最大值
    min - 返回流中最小值
     */
    @Test
    public void test1(){

        Boolean bl = employees.stream().allMatch((x) -> x.getMoney() > 100.00);
        System.out.println(bl);

        Boolean bl1 = employees.stream().anyMatch((x) -> x.getMoney() > 25000.00);
        System.out.println(bl1);

        Boolean bl2 = employees.stream().noneMatch((x) -> x.getMoney() < 1.00);
        System.out.println(bl2);

       Optional<String> optional = employees.stream()
                .sorted((e1,e2) -> -e1.getMoney().compareTo(e2.getMoney()))
                .map(Employee::getName)
                .findFirst();
        System.out.println(optional.get());

        Optional<Employee> optional2 = employees.parallelStream().filter((e) -> e.getMoney() > 10000.00)
                .findAny();
        System.out.println(optional2.get());
    }

    @Test
    public void test2(){

        long long1 = employees.stream().count();
        System.out.println(long1);

        Optional<String> optional3= employees.stream()
                .filter((x) -> x.getAge() > 25)
                .max((e1,e2) -> e1.getAge().compareTo(e2.getAge()))
                .map(Employee::getName);
        System.out.println(optional3.get());


        Optional<Employee> optional4= employees.stream()
                .filter((x) -> x.getAge() > 25)
                .min((e1,e2) -> e1.getAge().compareTo(e2.getAge()));
        System.out.println(optional4.get());
    }
}
原文地址:https://www.cnblogs.com/xinxin1994/p/12268660.html