diff --git a/src/test/java/com/wind/java8learn/streamapi/StreamAPIEndTest.java b/src/test/java/com/wind/java8learn/streamapi/StreamAPIEndTest.java index 722501fc413099864c0de1bb4a891fb3a5761a46..7e50c39a143237f9fb4e772f4519b360722950d5 100644 --- a/src/test/java/com/wind/java8learn/streamapi/StreamAPIEndTest.java +++ b/src/test/java/com/wind/java8learn/streamapi/StreamAPIEndTest.java @@ -1,6 +1,7 @@ package com.wind.java8learn.streamapi; import com.wind.java8learn.model.Employee; +import lombok.NonNull; import org.junit.jupiter.api.Test; import java.util.Arrays; @@ -84,12 +85,21 @@ public class StreamAPIEndTest { Optional maxEE = employeeList.stream() .max((e1, e2) -> Double.compare(e1.getSalary(),e2.getSalary())); - System.out.println("薪资最高的:" + maxEE.get()); + System.out.println("薪资最高的雇员信息:" + maxEE.get()); Optional minEE = employeeList.stream() .min((e1, e2) -> Double.compare(e1.getSalary(),e2.getSalary())); - System.out.println("薪资最低的:" + minEE.get()); + System.out.println("薪资最低的雇员信息:" + minEE.get()); + Optional maxDouble = employeeList.stream() + .map(Employee::getSalary) + .max(Double::compare); + System.out.println("最高年薪值是:"+maxDouble.get()); + + Optional minDouble = employeeList.stream() + .map(Employee::getSalary) + .min(Double::compare); + System.out.println("最低年薪值是:"+minDouble.get()); } diff --git a/src/test/java/com/wind/java8learn/streamapi/StreamApiTest2.java b/src/test/java/com/wind/java8learn/streamapi/StreamApiTest2.java index cacb40070797710ba361fb7ac00cd852627d1286..0e56d3b2d70829e9d39c76c51f09f7c948d6523c 100644 --- a/src/test/java/com/wind/java8learn/streamapi/StreamApiTest2.java +++ b/src/test/java/com/wind/java8learn/streamapi/StreamApiTest2.java @@ -104,6 +104,9 @@ public class StreamApiTest2 { .skip(2) //跳过 满足条件的前 2 条数据 .distinct() //重写hashCode() 和 equals()方法后,distinct()才会生效 .forEach(System.out::println); + + + } diff --git a/src/test/java/com/wind/java8learn/streamapi/StreamReduceTest.java b/src/test/java/com/wind/java8learn/streamapi/StreamReduceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..0303c12ed6f4fcd7cf879ad39f41dd27aa50e732 --- /dev/null +++ b/src/test/java/com/wind/java8learn/streamapi/StreamReduceTest.java @@ -0,0 +1,54 @@ +package com.wind.java8learn.streamapi; + +import com.wind.java8learn.model.Employee; +import lombok.NonNull; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +/** + * @Author :wind + * @Description : stream api 归约 + * 即 可以将流中的元素反复结合起来,得到一个值 + * @Date : 2020/1/2 17:15 + */ +public class StreamReduceTest { + + List employeeList = Arrays.asList( + new Employee("张三", 29, 19800.00, Employee.Status.FREE), + new Employee("李四", 19, 8800.00, Employee.Status.BUSY), + new Employee("王五", 21, 10800.00,Employee.Status.BUSY), + new Employee("麻子", 25, 13900.00,Employee.Status.FREE), + new Employee("大佬", 24, 10600.00,Employee.Status.BUSY), + new Employee("麻子2", 26, 10900.00,Employee.Status.FREE), + new Employee("麻子3", 27, 10900.00,Employee.Status.FREE) + ); + + @Test + public void test(){ + List integerList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + Integer sum = integerList.stream() + .reduce(0, (x, y) -> x + y);//跌加的初始值是 0 + System.out.println("reduce的结果是 :"+sum); + + System.out.println("==================================="); + + //求雇员工资的和 (两种reduce方法) + //方式一 + Double reduceSum = employeeList.stream() + .map(Employee::getSalary) //提取工资 + .reduce(0.00, (x, y) -> (x + y));//迭加的初始工资是 0.00 + System.out.println("雇员的工资总和:"+reduceSum); + + //方式一 (返回的是 Optional ) + Optional op = employeeList.stream() + .map(Employee::getSalary) //提取工资 + .reduce(Double::sum); + System.out.println("雇员的工资总和:"+op.get()); + + + + } +}