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());
  • 相关阅读:
    输出任意实数
    字谜游戏
    选择问题
    Spark Streaming揭秘 Day4-事务一致性(Exactly one)
    Spark Streaming揭秘 Day3-运行基石(JobScheduler)大揭秘
    Spark Streaming揭秘 Day2-五大核心特征
    Spark Streaming揭秘 Day1-三大谜团
    深度学习在美团搜索广告排序的应用实践
    美团外卖客户端高可用建设体系
    大众点评账号业务高可用进阶之路
  • 原文地址:https://www.cnblogs.com/yypr/p/15222089.html
Copyright © 2011-2022 走看看