java 8 stream、lambda表達式對list操作分組、過濾、求和、最值、排序、去重


1.分組
通過groupingBy分組指定字段
list.stream().collect(Collectors.groupingBy(User::getSex));

2.過濾
通過filter方法過濾某些條件
list.stream().filter(a -> !a.getJobNumber().equals("201901")).collect(Collectors.toList());

3.求和
基本類型:先mapToInt,然后調用sum方法
List.stream().mapToInt(User::getAge).sum();
大數類型:reduce調用BigDecimal::add方法
List.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);

4.最值
最大值
List.stream().map(User::getEntryDate).max(Date::compareTo).get();
最小值
List.stream().map(User::getEntryDate).min(Date::compareTo).get();

5.排序
list.stream().sorted((o1, o2)->o1.getItem().getValue().
compareTo(o2.getItem().getValue())).
collect(Collectors.toList());

sort()
       單字段排序,根據id排序    list.sort(Comparator.comparing(Obj::getItem));
   多字段排序,根據id,年齡排序    list.sort(Comparator.comparing(Obj::getItem).thenComparing(Obj::getItem));

6.去重
通過distinct方法
List.stream().distinct().collect(Collectors.toList());
對屬性
重寫方法

7.獲取list某個字段組裝新list
List.stream().map(a -> a.getId()).collect(Collectors.toList());

 


免責聲明!

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



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