• 12. Java8新特性_Stream_归约与收集


     

     

    package com.sggtwelve;
    
    import com.sggthree.Employee;
    import org.junit.Test;
    
    import java.util.*;
    import java.util.stream.Collectors;
    
    public class TestStreamAPI5 {
        /*
        规约:reduce(BinaryOperator)- 可以将流中元素反复结合起来,得到一个值
         */
        List<Employee> employees = Arrays.asList(
                new Employee("张三",18,9999.99, Employee.Status.FREE),
                new Employee("李四",58,5555.55, Employee.Status.BUSY),
                new Employee("王五",26,3333.33, Employee.Status.VOCATION),
                new Employee("赵六",36,6666.66, Employee.Status.FREE),
                new Employee("田七",12,8888.88, Employee.Status.BUSY),
                new Employee("田七",12,8888.88, Employee.Status.BUSY)
        );
    
        @Test
        public void test1(){
            List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
            Integer sum = list.stream().reduce(0,(x,y) -> x+y);
            System.out.println(sum);
            System.out.println("--------------------------------");
    
            Optional<Double> op = employees.stream()
                    .map(Employee::getMoney)
                    .reduce(Double::sum);
            System.out.println(op.get());
        }
    
        /*
        收集:collect-将流转换为其他形式。接收一个Collector接口的实现,用于给Stream中元素做汇总的方法
         1.总数
         2.平均值
         3.总和
         4.最大值
         5.最小值
         =============
         6.分组
         =============
         7.多级分组
         =============
         8.分区(满足条件一个区,不满足条件一个区)
         */
        @Test
        public void test2(){
            List<String> list = employees.stream()
                    .map(Employee::getName)
                    .collect(Collectors.toList());
            list.forEach(System.out::println);
            System.out.println("================toList结束============");
    
            Set<String> set = employees.stream()
                    .map(Employee::getName)
                    .collect(Collectors.toSet());
            set.forEach(System.out::println);
            System.out.println("================toSet结束============");
    
            HashSet<String> hashSet =  employees.stream()
                    .map(Employee::getName)
                    .collect(Collectors.toCollection(HashSet::new));
            hashSet.forEach(System.out::println);
            System.out.println("================toCollection结束============");
        }
    
        @Test
        public void test3(){
            //总数
           Long count = employees.stream()
                   .collect(Collectors.counting());
            System.out.println(count);
    
            //平均值
           Double money =  employees.stream()
                    .collect(Collectors.averagingDouble(Employee::getMoney));
            System.out.println(money);
    
            //总和
            Double moneySum = employees.stream()
                    .collect(Collectors.summingDouble(Employee::getMoney));
            System.out.println(moneySum);
    
            //最大值
            Optional<Employee> optionalEmployee = employees.stream()
                    .collect(Collectors.maxBy((e1,e2) -> Double.compare(e1.getMoney(),e2.getMoney())));
            System.out.println(optionalEmployee.get());
    
            //最小值
            Optional<Double> min = employees.stream()
                    .map(Employee::getMoney)
                    .collect(Collectors.minBy(Double::compareTo));
            System.out.println(min);
        }
    
    }
  • 相关阅读:
    centos eclipse java.net.UnknownHostException: mysql: 未知的名称或服务
    spring boot + mybatis plus生成了一个controller,返回数据正常,但报错Error resolving template [xx/xx/xxxx], template might not exist or might not be accessible by any of the configured Template Resolvers
    antdvue 树改变前面图标 隐藏默认子图标
    centos7 下共享文件
    centos7 安装mysql及workbench客户端
    从0开始学习VUE301Vue2与Vue3的不同点
    深入Typescript01使用roolup编译Typescript
    深入Typescript03Typescript中的类(努力加餐饭)
    深入Typescript02Typescript数据类型
    访问局域网资源,出现“指定的网络密码不正确”
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/12268749.html
Copyright © 2020-2023  润新知