From ea26f20f5c251a1be7fcd0e5911a84446991b874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=92=8A?= Date: Thu, 2 Jan 2020 17:35:50 +0800 Subject: [PATCH] =?UTF-8?q?map-reduce=20=E5=BD=92=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../streamapi/StreamAPIEndTest.java | 14 ++++- .../java8learn/streamapi/StreamApiTest2.java | 3 ++ .../streamapi/StreamReduceTest.java | 54 +++++++++++++++++++ 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/wind/java8learn/streamapi/StreamReduceTest.java diff --git a/src/test/java/com/wind/java8learn/streamapi/StreamAPIEndTest.java b/src/test/java/com/wind/java8learn/streamapi/StreamAPIEndTest.java index 722501f..7e50c39 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 cacb400..0e56d3b 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 0000000..0303c12 --- /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()); + + + + } +} -- Gitee