Java8中stream流的collectingAndThen方法應(yīng)用實例詳解
1.方法定義:
此方法是在進行歸納動作結(jié)束之后,對歸納的結(jié)果進行二次處理。
2.代碼演示:
User類準備
/** * @desc: 用戶實體類 * @author: shy * @date: 2020/12/28 12:38 */ @Data @AllArgsConstructor public class User { //用戶Id int userId; //用戶姓名 String userName; //用戶工資 Double salary; }
數(shù)據(jù)填充
//數(shù)據(jù)準備 User user1 = new User(1, "hangman", 100d); User user2 = new User(1, "list", 200d); User user3 = new User(2, "wing", 200d); User user4 = new User(2, "zeal", 100d); User user5 = new User(3, "tuba", 300d); List<User> userList = new ArrayList<>(); userList.add(user1); userList.add(user2); userList.add(user3); userList.add(user4); userList.add(user5);
1.對集合根據(jù)Id進行去重并返回去重后的List:
//對集合的結(jié)果進行去重 List<User> list = userList.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getUserId))), ArrayList::new)); System.out.println(list);
2.對集合根據(jù)Id進行去重并返回去重后的Map:
//對集合的結(jié)果進行去重 Map<Integer, User> userMap = userList.stream() .collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getId))), treeSet -> treeSet.stream().collect(Collectors.toMap(User::getId, user -> user, (u1, u2) -> u1)) )); System.out.println(userMap);
3.查找工資最高的員工的姓名:
//查找工資最高的員工的姓名 String userName = userList.stream() .collect(Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(User::getSalary)),(Optional<User> user) -> user.map(User::getUserName).orElse(null))); System.out.println(userName);
4.計算用戶工資的平均值:
//計算用戶工資的平均值 Double avgSalary = userList.stream() .collect(Collectors.collectingAndThen(Collectors.averagingDouble(User::getSalary), Double::doubleValue)); System.out.println(avgSalary);
3.總結(jié):
通過上面的例子,我們可以熟練的使用collectingAndThen進行歸納的結(jié)果進行二次處理。
到此這篇關(guān)于Java8中stream流的collectingAndThen方法應(yīng)用實例的文章就介紹到這了,更多相關(guān)java8 stream流 collectingAndThen內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java8列表中通過stream流根據(jù)對象屬性去重的三種方式
- Java8新特性Stream流中anyMatch和allMatch和noneMatch的區(qū)別解析
- Java8使用Stream流實現(xiàn)List列表查詢、統(tǒng)計、排序以及分組
- Java8實現(xiàn)Stream流的合并的方法展示
- Java8中Stream流求最大值最小值的實現(xiàn)示例
- Java8-Stream流操作List去重問題
- Java8?Stream流多字段求和、匯聚的實例
- Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)使用案例
相關(guān)文章
idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean
本文主要介紹了idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean的原因及三種解決方法,具有一定的參考價值,感興趣的可以了解一下2024-03-03java客戶端線上Apollo服務(wù)端的實現(xiàn)
這篇文章主要介紹了java客戶端線上Apollo服務(wù)端的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08SpringCloud協(xié)同開發(fā)實現(xiàn)方法淺析
好幾個人同時開發(fā)同一個服務(wù)上的不同模塊,導(dǎo)致你需要調(diào)試的接口總是被路由到別人的服務(wù)上,非常影響調(diào)試的效率,而且人越多越難受,總是請求不到自己的服務(wù),這篇文章主要介紹了SpringCloud協(xié)同開發(fā)實現(xiàn)方法2022-12-12java中Sources目錄Resources目錄的區(qū)別解讀
這篇文章主要介紹了java中Sources目錄Resources目錄的區(qū)別解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12