欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例詳解

 更新時(shí)間:2025年03月04日 11:29:35   作者:shy好好學(xué)習(xí)  
Java8中的Stream流提供了collectingAndThen方法,用于對歸納結(jié)果進(jìn)行二次處理,文章通過User類的數(shù)據(jù)填充,演示了如何使用該方法進(jìn)行集合去重、查找最高工資員工、計(jì)算平均工資等操作,感興趣的朋友跟隨小編一起看看吧

1.方法定義:

此方法是在進(jìn)行歸納動作結(jié)束之后,對歸納的結(jié)果進(jìn)行二次處理。

2.代碼演示:

User類準(zhǔn)備

/**
 * @desc: 用戶實(shí)體類
 * @author: shy
 * @date: 2020/12/28 12:38
 */
@Data
@AllArgsConstructor
public class User {
    //用戶Id
    int userId;
    //用戶姓名
    String userName;
    //用戶工資
    Double salary;
}

數(shù)據(jù)填充

//數(shù)據(jù)準(zhǔn)備
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進(jìn)行去重并返回去重后的List:

//對集合的結(jié)果進(jìn)行去重
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進(jìn)行去重并返回去重后的Map:

//對集合的結(jié)果進(jìn)行去重
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.計(jì)算用戶工資的平均值:

//計(jì)算用戶工資的平均值
Double avgSalary = userList.stream()
	.collect(Collectors.collectingAndThen(Collectors.averagingDouble(User::getSalary), Double::doubleValue));
System.out.println(avgSalary);

3.總結(jié):

通過上面的例子,我們可以熟練的使用collectingAndThen進(jìn)行歸納的結(jié)果進(jìn)行二次處理。

到此這篇關(guān)于Java8中stream流的collectingAndThen方法應(yīng)用實(shí)例的文章就介紹到這了,更多相關(guān)java8 stream流 collectingAndThen內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程并發(fā)執(zhí)行demo代碼實(shí)例

    Java多線程并發(fā)執(zhí)行demo代碼實(shí)例

    這篇文章主要介紹了Java多線程并發(fā)執(zhí)行demo代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean

    idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean

    本文主要介紹了idea中無法自動裝配未找到 ‘XXXXXXX‘ 類型的 Bean的原因及三種解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • java客戶端線上Apollo服務(wù)端的實(shí)現(xiàn)

    java客戶端線上Apollo服務(wù)端的實(shí)現(xiàn)

    這篇文章主要介紹了java客戶端線上Apollo服務(wù)端的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • SpringCloud協(xié)同開發(fā)實(shí)現(xiàn)方法淺析

    SpringCloud協(xié)同開發(fā)實(shí)現(xiàn)方法淺析

    好幾個(gè)人同時(shí)開發(fā)同一個(gè)服務(wù)上的不同模塊,導(dǎo)致你需要調(diào)試的接口總是被路由到別人的服務(wù)上,非常影響調(diào)試的效率,而且人越多越難受,總是請求不到自己的服務(wù),這篇文章主要介紹了SpringCloud協(xié)同開發(fā)實(shí)現(xiàn)方法
    2022-12-12
  • Java高級之虛擬機(jī)加載機(jī)制的實(shí)例講解

    Java高級之虛擬機(jī)加載機(jī)制的實(shí)例講解

    下面小編就為大家分享一篇Java高級之虛擬機(jī)加載機(jī)制的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java設(shè)計(jì)模式詳解之門面模式(外觀模式)

    Java設(shè)計(jì)模式詳解之門面模式(外觀模式)

    為子系統(tǒng)中的一組接口提供一個(gè)一致的界面, Facade 模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。本文給大家介紹Java設(shè)計(jì)模式詳解之門面模式(外觀模式),感興趣的朋友參考下吧
    2016-04-04
  • 簡單了解Java的默認(rèn)和靜態(tài)方法

    簡單了解Java的默認(rèn)和靜態(tài)方法

    這篇文章主要介紹了簡單了解Java的默認(rèn)和靜態(tài)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 詳解Java設(shè)計(jì)模式之橋接模式

    詳解Java設(shè)計(jì)模式之橋接模式

    橋接,顧名思義,就是用來連接兩個(gè)部分,使得兩個(gè)部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實(shí)現(xiàn)部分分離解耦,使他們可以獨(dú)立的變化。本文通過示例詳細(xì)介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-10-10
  • Mybatis一對一延遲加載實(shí)現(xiàn)過程解析

    Mybatis一對一延遲加載實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Mybatis一對一延遲加載實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java中Sources目錄Resources目錄的區(qū)別解讀

    java中Sources目錄Resources目錄的區(qū)別解讀

    這篇文章主要介紹了java中Sources目錄Resources目錄的區(qū)別解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論