Java8新特性:查找与匹配


查找和匹配

  1. allMatch-----检查是否匹配所有元素
  2. anyMatch------检查是否至少匹配一个元素
  3. noneMatch----检查    是否没有匹配所有元素 ===也就是:里面是否一个都没有,是就返回真  ,如果有匹配的元素就返回false
  4. findFirst-------返回第一个元素
  5. findAny------返回当前流中的任意元素
  6. count--------返回流中的元素总个数
  7. max----------返回流中的最大值
  8. min-----------返回流中的最小值

完全记住应该是记不住的,保存一下,用的时候查一下。

package com;

import entity.Employee;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;

public class Main {


    static List employees = Arrays.asList(
            new Employee("aa", 18, 99999.99),
            new Employee("bb", 22, 222222.22),
            new Employee("cc", 33, 23123.9),
            new Employee("dd", 11, 139.99),
            new Employee("ee", 23, 929.99),
            new Employee("ff", 68, 1000.00)
    );


    public static void main(String[] args) {
        boolean b1 = employees.stream()
                .allMatch((e) -> e.getAge() > 10);
        System.out.println("b1 = " + b1);

        boolean b2 = employees.stream()
                .anyMatch((e) -> e.getAge() == 23);
        System.out.println("b2 = " + b2);

        boolean b3 = employees.stream()
                .noneMatch((e) -> e.getAge() == 23);
        System.out.println("b3 = " + b3);

        Optional first = employees.stream().findFirst();
        System.out.println("first = " + first);

        Optional any = employees.stream().findAny();
        System.out.println("any = " + any);

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

        Optional max = employees.stream().max((x, y) -> (int) (x.getMoney() - y.getMoney()));
        System.out.println("max = " + max);

    }
}

================================

对于Optional类可以用get方法得到里面的employee对象。

===可以看到 多次运行,这个any的值都是一样的。

如果把stream换成 parallelStream的话就变化了

stream是串行流

parallelStream是并行流

package com;

import entity.Employee;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;

public class Main {


    static List employees = Arrays.asList(
            new Employee("aa", 18, 99999.99),
            new Employee("bb", 22, 222222.22),
            new Employee("cc", 33, 23123.9),
            new Employee("dd", 11, 139.99),
            new Employee("ee", 23, 929.99),
            new Employee("ff", 68, 1000.00)
    );


    public static void main(String[] args) {
        Optional any1 = employees.stream().findAny();
        System.out.println("any1 = " + any1);


        Optional any = employees.parallelStream().findAny();
        System.out.println("any = " + any.get());
    }
}