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

java對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的3種方式舉例

 更新時(shí)間:2024年01月23日 10:25:52   作者:jilcccccc  
開發(fā)小伙伴們通常會(huì)需要使用到對(duì)象和Map互相轉(zhuǎn)換的開發(fā)場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于java對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的3種方式,需要的朋友可以參考下

可以使用Java 8中的Stream API將List轉(zhuǎn)換為Map,并根據(jù)某個(gè)屬性作為鍵或值。以下是一些示例代碼:

將List轉(zhuǎn)換為Map,鍵為某個(gè)屬性,值為對(duì)象本身

List<Person> personList = ... // 假設(shè)這是一個(gè)Person對(duì)象列表
Map<String, Person> personMap = personList.stream()
        .collect(Collectors.toMap(Person::getName, Function.identity()));

在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象的name屬性,值為Person對(duì)象本身。

將List轉(zhuǎn)換為Map,鍵為對(duì)象本身,值為某個(gè)屬性

List<Person> personList = ... // 假設(shè)這是一個(gè)Person對(duì)象列表
Map<Person, String> personMap = personList.stream()
        .collect(Collectors.toMap(Function.identity(), Person::getAddress));

在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象本身,值為Person對(duì)象的address屬性。

將List轉(zhuǎn)換為Map,鍵為某個(gè)屬性,值為另一個(gè)屬性

List<Person> personList = ... // 假設(shè)這是一個(gè)Person對(duì)象列表
Map<String, String> personMap = personList.stream()
        .collect(Collectors.toMap(Person::getName, Person::getAddress));

在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象的name屬性,值為Person對(duì)象的address屬性。

無(wú)論使用哪種方式,都可以使用Java 8的Stream API將List轉(zhuǎn)換為Map,并根據(jù)某個(gè)屬性作為鍵或值。需要注意的是,在將List轉(zhuǎn)換為Map時(shí),鍵必須是唯一的,否則將會(huì)拋出異常。

附:list轉(zhuǎn)map特殊操作

不同實(shí)體的list之間轉(zhuǎn)化,相同屬性的賦值

    List<ResourcesInfoCapacityExcel> resourceInfoExcels = resourcesInfoCapacities.stream().map(
                todo -> new ResourcesInfoCapacityExcel(todo.getModelName(), todo.getExistingCapacity(), todo.getForecastWorkload(), todo.getDifferenceWorkload(), todo.getMonth()
                )).collect(Collectors.toList());

非stram

相同key將值相加,不同key put進(jìn)map

  Map<String, Double> foreWorkLoad = new HashMap<>();
foreWorkLoad.merge(key, resourcesWorkloadCalculate1.getWorkLoad(), (a, b) -> a + b);

list轉(zhuǎn)map,相同key的list相加

 Map<String, List<ResourcesInfo>> resourcesInfosListMap =new HashMap<>();
        for (ResourcesInfo resourcesInfo:
        resourcesInfos) {
            String key=resourcesInfo.getModel() + "," + workDateMap.get(resourcesInfo.getMonth());

            List<ResourcesInfo>  moduleRanks = resourcesInfos.stream()
                    .filter(e -> resourcesInfo.getModel() == null || resourcesInfo.getModel().equals(e.getModel())
                    ).filter(e -> resourcesInfo.getMonth() == null || resourcesInfo.getMonth().equals(e.getMonth())
            ).collect(Collectors.toList());
            if (resourcesInfosListMap.get(key)==null){
                resourcesInfosListMap.put(key,moduleRanks);
            }else {
                moduleRanks.addAll(resourcesInfosListMap.get(key));
                resourcesInfosListMap.put(key,moduleRanks);
            }
        }

總結(jié)

到此這篇關(guān)于java對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的3種方式的文章就介紹到這了,更多相關(guān)java對(duì)象根據(jù)某屬性轉(zhuǎn)換map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java編寫迷宮小游戲

    Java編寫迷宮小游戲

    最近經(jīng)常在機(jī)房看同學(xué)在玩一個(gè)走迷宮的游戲,比較有趣,自己也用java寫一個(gè)實(shí)現(xiàn)隨機(jī)生成迷宮的算法,其實(shí)就是一個(gè)圖的深度優(yōu)先遍歷算法.
    2016-05-05
  • 實(shí)例解析Java關(guān)于static的作用

    實(shí)例解析Java關(guān)于static的作用

    只要是有學(xué)過(guò)Java的都一定知道static,也一定能多多少少說(shuō)出一些作用和注意事項(xiàng)。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • springsecurity6配置自定義路徑身份認(rèn)證的實(shí)現(xiàn)

    springsecurity6配置自定義路徑身份認(rèn)證的實(shí)現(xiàn)

    本文主要介紹了springsecurity6配置自定義路徑身份認(rèn)證的實(shí)現(xiàn),通過(guò)使用自定義的AuthorizationManager和MyService,可以實(shí)現(xiàn)更靈活的訪問(wèn)控制,感興趣的可以了解一下
    2025-03-03
  • MyBatis Plus邏輯刪除和分頁(yè)插件使用詳解

    MyBatis Plus邏輯刪除和分頁(yè)插件使用詳解

    這篇文章主要介紹了MyBatis Plus之邏輯刪除和分頁(yè)插件使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot批處理的實(shí)現(xiàn)示例

    SpringBoot批處理的實(shí)現(xiàn)示例

    SpringBatch是一個(gè)開源 的、全面的、輕量級(jí)的批處理框架,通過(guò)SpringBoot可以實(shí)現(xiàn)強(qiáng)大的批處理應(yīng)用程序開發(fā),本文主要介紹了SpringBoot批處理的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2022-03-03
  • Java線程狀態(tài)及切換、關(guān)閉線程的正確姿勢(shì)分享

    Java線程狀態(tài)及切換、關(guān)閉線程的正確姿勢(shì)分享

    這篇文章主要給大家介紹了關(guān)于Java線程狀態(tài)及切換、關(guān)閉線程的正確姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringCLoud搭建Zuul網(wǎng)關(guān)集群過(guò)程解析

    SpringCLoud搭建Zuul網(wǎng)關(guān)集群過(guò)程解析

    這篇文章主要介紹了SpringCLoud搭建Zuul網(wǎng)關(guān)集群過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java序列化機(jī)制與原理的深入分析

    Java序列化機(jī)制與原理的深入分析

    有關(guān)Java對(duì)象的序列化和反序列化也算是Java基礎(chǔ)的一部分,下面對(duì)Java序列化的機(jī)制和原理進(jìn)行一些介紹
    2013-05-05
  • java.math包下計(jì)算浮點(diǎn)數(shù)和整數(shù)的類的實(shí)例

    java.math包下計(jì)算浮點(diǎn)數(shù)和整數(shù)的類的實(shí)例

    這篇文章主要介紹了java.math包下計(jì)算浮點(diǎn)數(shù)和整數(shù)的類的實(shí)例代碼,本文通過(guò)使用BigDecimal進(jìn)行浮點(diǎn)數(shù)比較給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java?ASM使用logback日志級(jí)別動(dòng)態(tài)切換方案展示

    Java?ASM使用logback日志級(jí)別動(dòng)態(tài)切換方案展示

    這篇文章主要介紹了Java?ASM使用logback日志級(jí)別動(dòng)態(tài)切換方案展示,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04

最新評(píng)論