目录
Stream 的终止操作
终止操作会从流的流水线生成结果。其结果可以是任何不是流的 值,例如:List、Integer,甚至是 void 。
查找与匹配
案例代码
package com.csdn.test;
import com.csdn.entity.Employee;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
* @author summer
* @date 2022-04-16 18:11
*/
public class TestFinal1 {
List<Employee> employees = Arrays.asList(
new Employee("张三",18,6666.66),
new Employee("李四",38,3333.66),
new Employee("王五",32,4444.66),
new Employee("赵六",42,5555.66),
new Employee("田七",21,9999.66),
new Employee("王八",19,8888.66),
new Employee("王八",19,8888.66),
new Employee("王八",19,8888.66),
new Employee("张九",52,7777.66)
);
@Test
public void test(){
// 检查是否所有的员工年龄都大于20
boolean allMatch = employees.stream().allMatch(emp->emp.getAge()>20);
System.out.println(allMatch);
// 检查是否有至少有一个员工的年龄大于20
boolean anyMatch = employees.stream().anyMatch(emp -> emp.getAge() > 20);
System.out.println(anyMatch);
// 检查所有员工是否年龄都没大于20的
boolean noneMatch = employees.stream().noneMatch(emp -> emp.getAge() > 20);
System.out.println(noneMatch);
// 返回年龄大于20的第一个,至于Optional后面我们会讲,这也是Java8的一个新特性,这里先使用一下
Optional<Employee> first = employees.stream().filter(emp -> emp.getAge() > 20).findFirst();
System.out.println(first.get());
// 返回年龄大于20的任意一个员工
Optional<Employee> any = employees.parallelStream().filter(emp -> emp.getAge() > 20).findAny();
System.out.println(any.get());
// 返回年龄大于20的员工个数
long count = employees.stream().filter(emp -> emp.getAge() > 20).count();
System.out.println(count);
// 查询工资最高的员工
Optional<Employee> max = employees.stream().max((e1, e2) -> e1.getSalary().compareTo(e2.getSalary()));
System.out.println(max.get());
// 查找最低的工资
Optional<Double> min = employees.stream().map(Employee::getSalary).min(Double::compare);
System.out.println(min.get());
// 迭代多有信息
employees.stream().forEach(System.out::println);
}
}