Java8新特性:查找与匹配
查找和匹配
- allMatch-----检查是否匹配所有元素
- anyMatch------检查是否至少匹配一个元素
- noneMatch----检查 是否没有匹配所有元素 ===也就是:里面是否一个都没有,是就返回真 ,如果有匹配的元素就返回false
- findFirst-------返回第一个元素
- findAny------返回当前流中的任意元素
- count--------返回流中的元素总个数
- max----------返回流中的最大值
- 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());
}
}