• 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());
  • 相关阅读:
    appium自动化测试搭建
    How to install Qt Creator on Ubuntu 18.04
    Luci
    OpenWrt 根文件系统启动过程分析
    shell 杂烩
    OpenWrt Luci 调试日志输出的一种方法
    jQuery实现购物车计算价格的方法
    js实现购物车添加,减少数量
    golang-键盘录入数据
    JAVA存储机制(栈、堆、方法区详解)
  • 原文地址:https://www.cnblogs.com/yypr/p/15222089.html
Copyright © 2020-2023  润新知