国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java中用Stream流對(duì)List對(duì)象集合轉(zhuǎn)Map時(shí)key值重復(fù)的操作

這篇具有很好參考價(jià)值的文章主要介紹了Java中用Stream流對(duì)List對(duì)象集合轉(zhuǎn)Map時(shí)key值重復(fù)的操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

看完你還不懂,你直接噴··

定義:

1.List是一個(gè)裝Dto對(duì)象的集合

2.Dto里面有ID屬性,name屬性等等

3.Dto里面的ID會(huì)重復(fù)

?現(xiàn)在要把List轉(zhuǎn)成以ID為key值的map,明顯key不能重復(fù)啊,所以應(yīng)該怎么操作呢?

(需要你有java8Stream流的基本概念,map的基本概念)

?操作1:重復(fù)key,選擇保留其中一個(gè)value值

代碼:

Map<String, Dto> dataMap = List.stream().collect(Collectors.toMap(

e -> e.getId(),

e -> e,

(k1, k2)-> k1)

);

解釋:這是一個(gè)流式操作

e -> e.getId() = 它把對(duì)象Dto中id取出來當(dāng)成key

e -> e = value的值就是本身對(duì)象Dto

(k1, k2)-> k1 = 并且解釋了當(dāng)key值重復(fù)時(shí)它會(huì)將第一個(gè)重復(fù)的值保留。

總結(jié):這樣的一個(gè)操作可以滿足key值重復(fù)時(shí)value值保留并且不報(bào)錯(cuò),但是還是有風(fēng)險(xiǎn),不知道你保留的具體是不是你要的值。

操作2:重復(fù)key,把value疊加到一個(gè)List集合中,到達(dá)按id分組的效果

代碼:

Map<String, List<Dto>> dataMap = List.stream().collect(Collectors.toMap(

e -> e.getId(),

e -> {

? ? ? ? List<Dto> list = new ArrayList<>();

? ? ? ? list.add(e);

? ? ? ? return list;

},

( List<Dto> list1, List<Dto> list2)-> {

? ? ? ? list1.add(list2);

? ? ? ? return list1;

})

);

解釋:這是一個(gè)流式操作

e -> e.getId() = 它把對(duì)象Dto中id取出來當(dāng)成key

e -> {

? ? ? ? List<Dto> list = new ArrayList<>();

? ? ? ? list.add(e);

? ? ? ? return list;

}

?= value的值放入一個(gè)集合里面

( List<Dto> list1, List<Dto> list2)-> {

? ? ? ? list1.add(list2);

? ? ? ? return list1;

})

= 當(dāng)key值重復(fù)時(shí)它會(huì)將key值也就是id相同的數(shù)據(jù)都添加到一個(gè)集合對(duì)象中。

總結(jié):這樣的一個(gè)操作可以滿足key值重復(fù)時(shí)value值,按id分組得到一個(gè)Map<String, List<Dto>> dataMap對(duì)象文章來源地址http://www.zghlxwxcb.cn/news/detail-799500.html

到了這里,關(guān)于Java中用Stream流對(duì)List對(duì)象集合轉(zhuǎn)Map時(shí)key值重復(fù)的操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

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

    可以使用Java 8中的Stream API將List轉(zhuǎn)換為Map,并根據(jù)某個(gè)屬性作為鍵或值。以下是一些示例代碼: 在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象的name屬性,值為Person對(duì)象本身。 在這個(gè)示例中,將Person對(duì)象列表轉(zhuǎn)換為Map,其中鍵為Person對(duì)象本身,值為Person對(duì)象的

    2024年02月13日
    瀏覽(97)
  • 使用Stream流對(duì)集合排序

    使用Stream流對(duì)集合排序

    有一些業(yè)務(wù)需要對(duì)集合按照一些規(guī)則進(jìn)行排序,本篇介紹如何用Stream()對(duì)集合進(jìn)行升序或者降序操作。 之前只有接觸過使用數(shù)據(jù)庫進(jìn)行排序,有一些情況需要不同的排序結(jié)果,如果進(jìn)行多次查詢會(huì)多次操作數(shù)據(jù)庫,所以有些地方使用流對(duì)集合操作是更好的選擇。 Stream 流 - 調(diào)

    2024年02月12日
    瀏覽(24)
  • stream流的使用-獲取list集合中對(duì)象的單個(gè)字段list集合,進(jìn)行累加操作

    場景及代碼案例源于實(shí)際項(xiàng)目 現(xiàn)存一list集合,其中保存了投資人的信息。 Person (name, age, money rateOfReturn) 其中的money表示投資人現(xiàn)有資產(chǎn),rateOfReturn表示投資年回報(bào)率 需求: 1.計(jì)算投資人年齡之和; 2.根據(jù)現(xiàn)有資產(chǎn)及投資回報(bào)率,計(jì)算所有投資人一年后的資產(chǎn)總和; 實(shí)體

    2023年04月22日
    瀏覽(96)
  • Stream流 - 兩個(gè)list集合對(duì)象屬性的合并、對(duì)象屬性值運(yùn)算

    Stream流 - 兩個(gè)list集合對(duì)象屬性的合并、對(duì)象屬性值運(yùn)算

    ?? 合并兩個(gè) list<map>, 并將 userId 相同的所有屬性合并到一個(gè) map 中 list1中對(duì)象的屬性:userId、userName list2中對(duì)象的屬性:userId、gender、age ?? 最終總集合中對(duì)象的屬性:userId、userName、gender、age 運(yùn)行結(jié)果: 結(jié)果可見,userId 相同的所有屬性合并到集合 list1中。 ?? 合并兩個(gè)

    2024年02月06日
    瀏覽(307)
  • 使用Stream流篩選出List集合中符合條件的實(shí)體對(duì)象

    使用stream流篩選出List集合中符合條件的實(shí)體對(duì)象 注意:使用findFirst()方法返回的是符合條件的第一個(gè)元素,使用findAny()方法在多線程并發(fā)訪問下是符合條件的任意元素 示例: 結(jié)果:

    2024年02月16日
    瀏覽(88)
  • java 8 stream toMap key的重復(fù)問題

    工作中遇到需要將某個(gè)List里面的實(shí)體類的兩個(gè)屬性對(duì)應(yīng)起來,比如根據(jù)姓名找到年齡,就是將List里面的entity屬性解析之后放到Map里。 實(shí)體類: 邏輯: 單純常規(guī)寫法肯定沒什么問題,就是后面的key會(huì)被覆蓋,但是stream流不行,會(huì)報(bào)錯(cuò)。 Collectors.toMap這個(gè)方法其實(shí)是有三個(gè)參數(shù)

    2024年01月22日
    瀏覽(22)
  • Java中l(wèi)ist集合stream流去重

    準(zhǔn)備類: (1)根據(jù)單字段name去重 (2)根據(jù)多字段name price去重 (3)示例 輸出打印結(jié)果

    2024年02月09日
    瀏覽(81)
  • springboot讀取yml文件中的list列表、數(shù)組、map集合和對(duì)象方法實(shí)例

    springboot讀取yml文件中的list列表、數(shù)組、map集合和對(duì)象方法實(shí)例

    目錄前言application.yml定義list集合application.yml定義數(shù)組類型總結(jié) 前言 springboot配置文件yml類型簡單的風(fēng)格,十分受大家的歡迎,支持字符string類型,支持列表list類型,支持集合map類型,支持?jǐn)?shù)組array類型,支持類對(duì)象類型,下面我們來實(shí)戰(zhàn)下這些形式的配置如何取值 applicatio

    2024年02月09日
    瀏覽(87)
  • Java Stream:List分組成Map或LinkedHashMap

    在Java中,使用Stream API可以輕松地對(duì)集合進(jìn)行操作,包括將List轉(zhuǎn)換為Map或LinkedHashMap。本篇博客將演示如何利用Java Stream實(shí)現(xiàn)這兩種轉(zhuǎn)換,同時(shí)假設(shè)List中的元素是User對(duì)象。 List轉(zhuǎn)Map有兩種Map格式,分別是 MapString, User 和 MapString, List ,下面我將分別展示: 轉(zhuǎn)換成MapString, User我們

    2024年02月03日
    瀏覽(21)
  • Java8特性,Stream流的使用,收集成為map集合

    Java 8引入了Stream API,這是Java集合操作的一個(gè)重大改進(jìn)。Stream API提供了一種高效且易于使用的處理數(shù)據(jù)的方式。 Stream是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合、數(shù)組等)所生成的元素序列。注意:Stream自己不會(huì)存儲(chǔ)元素,它不會(huì)改變?cè)磳?duì)象,反而它的操作會(huì)返回一個(gè)全新的Strea

    2024年04月22日
    瀏覽(100)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包