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());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM