Java 8 (lambda)表达式 Collectors中的统计、分组、排序、过滤等

时间:2021-09-03
本文章向大家介绍Java 8 (lambda)表达式 Collectors中的统计、分组、排序、过滤等,主要包括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());

原文地址:https://www.cnblogs.com/yypr/p/15222089.html