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());
  • 相关阅读:
    AndroidManifest.xml详细分析
    GoogleMap-------解决不能使用问题
    GoogleMap-------manifest文件配置
    GoogleMap-------Google Play services SDK的下载和配置
    css_兼容IE和FF的写法
    dede如何新建一个ajax服务端输出文件
    js用ajax和不同页面的php互相传值的方法
    js获取多个标签元素的内容,并根据元素的内容修改标签的属性
    网页上记录鼠标的点击次数和一段有用的php代码,自己学习使用
    PHP弹出提示框并跳转到新页面即重定向到新页面
  • 原文地址:https://www.cnblogs.com/yypr/p/15222089.html
Copyright © 2011-2022 走看看