allMatch是否匹配所有元素
anyMatch是否至少匹配一个元素
noneMatch是否没有匹配的所有元素
findFirst返回第一个元素
findAny返回当前流中的任意元素
count返回流中元素的总个数
max返回流中最大值
min返回流中最小值
public class StreamMatch {
List<Employee> employees = new ArrayList<>();
{
employees.add(new Employee(1, "张三", 20, 8895.31, true));
employees.add(new Employee(2, "张四", 28, 7894.34, true));
employees.add(new Employee(3, "张柳", 46, 6895.37, false));
employees.add(new Employee(66, "王一", 54, 5895.5, true));
employees.add(new Employee(56, "李四", 55, 4895.8, false));
employees.add(new Employee(89, "李十一", 32, 9895.354, false));
employees.add(new Employee(546, "张十五", 20, 18895.37, false));
employees.add(new Employee(43, "刘十六", 43, 28895.35, true));
employees.add(new Employee(66, "刘十六", 43, 28895.35, false));
}
@Test
public void testStreamAllMatch() {
boolean b = employees.stream().allMatch(employee -> employee.getSalary() > 5000);
System.out.println("测试是不是所有的职工的工资都大于4000:" + b);
}
@Test
public void testStreamAnyMatch() {
boolean b = employees.stream().anyMatch(employee -> employee.getSalary() > 20000);
System.out.println("测试是不是有一个职工的工资大于20000:" + b);
}
@Test
public void testStreamNoneMatch() {
boolean b = employees.stream().noneMatch(employee -> employee.getSalary() > 20000);
System.out.println("测试是不是没有一个职工的工资大于20000:" + b);
}
@Test
public void testStreamFindFirst() {
Optional<Employee> first = employees.stream().findFirst();
System.out.println("流中的第一个元素:" + first.get());
}
@Test
public void testStreamFindAny() {
Optional<Employee> first = employees.stream().findAny();
System.out.println("流中的任意元素(串行流):" + first.get());
Optional<Employee> any = employees.parallelStream().filter(employee ->
employee.getSalary() > 5000 && employee.getStatus()).findAny();
System.out.println("流中的任意元素(并行流):" + any.get());
}
@Test
public void testStreamMaxOrMin() {
Optional<Employee> max = employees.stream().max(Comparator.comparing(Employee::getSalary));
System.out.println("流中的工资最大的元素(串行流):" + max.get());
Optional<Employee> min = employees.stream().min(Comparator.comparing(Employee::getSalary));
System.out.println("流中的工资最大的元素(串行流):" + min.get());
}
}