zoukankan      html  css  js  c++  java
  • Java 8 (lambda)表达式 Collectors中的统计、分组、排序、过滤等

    #使用filter()过滤List

    //添加测试数据
    List<User> userList = new ArrayList<>();
    studentList.add(new StudentInfo("张三",14));
    studentList.add(new StudentInfo("李四",18));
    studentList.add(new StudentInfo("王五",21));
    studentList.add(new StudentInfo("赵六",17));

    //查找年龄在18岁以上的
    List<User> userFilterList = userList.stream().filter(s->s.getAge() >= 18).collect(Collectors.toList());
    //输出查找结果
    StudentInfo.printStudents(userFilterList);

    #使用groupingBy()进行分组后 使用averagingInt()进行求平均值

    //添加测试数据  
    List<ResultModel> selectResultList = new ArrayList<>();
    selectResultList.add("传输网IP",12,10,22);
    selectResultList.add("传输网IP",14,10,30);
    selectResultList.add("传输网IP",12,10,33);
    selectResultList.add("传输网IP",17,11,41);
    selectResultList.add("传输网IP",12,10,15);
    //根据数据源id,策略id进行分组
    Map<String, List<ResultModel>> countMap = sevenDaySqlList.stream().collect(Collectors.groupingBy(item -> item.getDatasourceId() + "_" + item.getPolicyId()));

    for(String keys : countMap.keySet()){
    String[] temp = keys.split("_");
    Integer datasourceId = Integer.valueOf(temp[0]);
    Integer policyId = Integer.valueOf(temp[1]);
    List<ResultModel> list = countMap.get(keys);
       //进行求平均值计算
    Double resultAvg = list.stream().collect(Collectors.averagingInt(ResultModel::getResultNum));
    }
    //过滤 采集结果为0的数据 且不在范围内的数据后  并求平均值
    Double resultAvg = list.stream().filter(s->s.getResultNum() > 0  && Math.max(reduc, s.getResultNum()) == Math.min(s.getResultNum(), plus) ).collect(Collectors.averagingInt(ResultModel::getResultNum));
    
    //获取平均值,总数,最大数,最小数,求和
    IntSummaryStatistics summaryStatistics = getNowList.stream().collect(Collectors.summarizingInt(ResultModel::getResultNum));
    double avgResult = summaryStatistics.getAverage();int countResult = Math.toIntExact(summaryStatistics.getCount());
    int maxResult = Math.toIntExact(summaryStatistics.getMax());
    int minResult = Math.toIntExact(summaryStatistics.getMin());
    int sumResult = Math.toIntExact(summaryStatistics.getSum());
  • 相关阅读:
    谜之This
    JS 面向对象 ~ 继承的7种方式
    JS 面向对象 ~ 创建对象的 9 种方式
    JS 原型与原型链
    ES6 Promise 详解
    Vue diff 算法
    Vue Router 路由实现原理
    Vue Keep-alive 原理
    Vue 响应式原理
    JS 有趣的JS
  • 原文地址:https://www.cnblogs.com/yypr/p/15222089.html
Copyright © 2011-2022 走看看