import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamAPITest2 {
@Test
public void test1() {
List<Employee> employees = EmployData.getEmployees();
boolean allMatch = employees.stream().allMatch((e) -> e.getAge() > 18);
System.out.println("allMatch = " + allMatch);
boolean anyMatch = employees.stream().anyMatch((e) -> e.getSalary() > 10000);
System.out.println("anyMatch = " + anyMatch);
boolean noneMatch = employees.stream().noneMatch((e) -> e.getName().startsWith("雷"));
System.out.println("noneMatch = " + noneMatch);
Optional<Employee> first = employees.stream().findFirst();
System.out.println("first = " + first);
Optional<Employee> any = employees.parallelStream().findAny();
System.out.println("any = " + any);
}
@Test
public void test2() {
List<Employee> employees = EmployData.getEmployees();
long count = employees.stream().filter((e) -> e.getSalary() > 5000).count();
System.out.println("count = " + count);
Stream<Double> doubleStream = employees.stream().map((e) -> e.getSalary());
Optional<Double> max = doubleStream.max(Double::compareTo);
System.out.println("max = " + max);
Optional<Employee> min = employees.stream().min((e1, e2) -> Double.compare(e1.getSalary(), e2.getSalary()));
System.out.println("min = " + min);
employees.stream().forEach(System.out::println);
employees.forEach(System.out::println);
}
@Test
public void test3(){
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Integer reduce = list.stream().reduce(0, Integer::sum);
System.out.println("reduce = " + reduce);
List<Employee> employees = EmployData.getEmployees();
Stream<Double> doubleStream = employees.stream().map(Employee::getSalary);
Optional<Double> sumSalary = doubleStream.reduce(Double::sum);
System.out.println("sumSalary = " + sumSalary);
}
@Test
public void test4(){
List<Employee> employees = EmployData.getEmployees();
List<Employee> employeeList = employees.stream().filter((e) -> e.getSalary() > 6000).collect(Collectors.toList());
System.out.println("employeeList = " + employeeList);
Set<Employee> employeeSet = employees.stream().filter((e) -> e.getSalary() > 6000).collect(Collectors.toSet());
System.out.println("employeeSet = " + employeeSet);
}
}