#使用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());