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

JDK8的lambda方式List轉(zhuǎn)Map的操作方法

 更新時間:2024年04月30日 10:01:40   作者:諸葛小猿  
account是一個返回本身的lambda表達(dá)式,其實還可以使用Function接口中的一個默認(rèn)方法代替,使整個方法更簡潔優(yōu)雅,這篇文章主要介紹了JDK8的lambda方式List轉(zhuǎn)Map,需要的朋友可以參考下

JDK8的lambda方式List轉(zhuǎn)Map

遍歷

public void forEach(Map<Long, String> map) {
	map.forEach((k, v) -> {
		System.out.println("k=" + k + ",v=" + v);
	});
}

list轉(zhuǎn)map

代碼如下:

public Map<Long, String> getIdNameMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));
}

list轉(zhuǎn)成實體本身map

public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, account -> account));
}

account -> account是一個返回本身的lambda表達(dá)式,其實還可以使用Function接口中的一個默認(rèn)方法代替,使整個方法更簡潔優(yōu)雅:

public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, Function.identity()));
}

list轉(zhuǎn)map:重復(fù)key處理

public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity()));
}

這個方法可能報錯(java.lang.IllegalStateException: Duplicate key),因為name是有可能重復(fù)的。toMap有個重載方法,可以傳入一個合并的函數(shù)來解決key沖突問題:

public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2));
}

這里只是簡單的使用后者覆蓋前者來解決key重復(fù)問題。
舉例:

        List<TDeliveryOperation> tDeliveryOperations = tDeliveryOperationMapper.selectList(wrapper1);
        Map<Long, TDeliveryOperation> operationMap = tDeliveryOperations.stream()
                .collect(Collectors.toMap(
                        TDeliveryOperation::getOrderId,
                        Function.identity(),
                        (key1, key2) -> {
                            // 如果存在多條記錄  選擇最后更新時間最大的
                            if (key1.getLastUpdatedAt() != null
                                    && key2.getLastUpdatedAt() != null
                                    && key1.getLastUpdatedAt().getTime() >= key2.getLastUpdatedAt().getTime()) {
                                return key1;
                            }
                            return key2;
                        })
                );

指定具體收集的map

toMap還有另一個重載方法,可以指定一個Map的具體實現(xiàn),來收集數(shù)據(jù):

public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2, LinkedHashMap::new));
}

到此這篇關(guān)于JDK8的lambda方式List轉(zhuǎn)Map的文章就介紹到這了,更多相關(guān)JDK8 List轉(zhuǎn)Map內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)解析zip壓縮包并獲取文件內(nèi)容

    Java實現(xiàn)解析zip壓縮包并獲取文件內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)頁面上傳一個源碼壓縮包,后端將壓縮包解壓,并獲取每個文件中的內(nèi)容,感興趣的可以動手嘗試一下
    2022-07-07
  • JAVA文件讀取常用工具類(8種)

    JAVA文件讀取常用工具類(8種)

    JAVA操作文件在經(jīng)常會使用到,本文匯總了部分JAVA操作文件的讀取常用工具類,主要介紹了8種方法,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • Java實現(xiàn)冒泡排序算法

    Java實現(xiàn)冒泡排序算法

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)冒泡排序算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Java實現(xiàn)批量合并Excel工作表

    Java實現(xiàn)批量合并Excel工作表

    這篇文章主要為大家詳細(xì)介紹了如何使用Java快速實現(xiàn)批量Excel工作表的合并,文中的示例代碼代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件(最新推薦)

    IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件(最新推薦)

    這篇文章主要介紹了IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • SpringDataJPA詳解增刪改查操作方法

    SpringDataJPA詳解增刪改查操作方法

    這篇文章主要介紹了SpringDataJpa增刪改查操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Spring?Data?JPA注解Entity使用示例詳解

    Spring?Data?JPA注解Entity使用示例詳解

    這篇文章主要為大家介紹了Spring?Data?JPA注解Entity使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • mybatis框架order by作為參數(shù)傳入時失效的解決

    mybatis框架order by作為參數(shù)傳入時失效的解決

    這篇文章主要介紹了mybatis框架order by作為參數(shù)傳入時失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 使用SpringMVC返回json字符串的實例講解

    使用SpringMVC返回json字符串的實例講解

    下面小編就為大家分享一篇使用SpringMVC返回json字符串的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Java不定參數(shù)使用及一些注意情況

    Java不定參數(shù)使用及一些注意情況

    不定參數(shù)是一種特殊的參數(shù)類型,它允許方法接受可變數(shù)量的參數(shù),本文主要介紹了Java不定參數(shù)使用及一些注意情況,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論