日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java lambda list轉換map時,把多個參數拼接作為key操作

瀏覽:209日期:2022-08-26 11:51:01

我就廢話不多說了,大家還是直接看代碼吧~

Map<String, Parts> partsMap = synList.stream().collect(Collectors.toMap(k ->

k.getOe()+k.getOeId()+k.getPartGroupId()+k.getStdPartId()+k.getBrandCode(), part -> part));

補充知識:Java8 Collectors.toMap的兩個大坑

Collectors.toMap()方法的正常使用示例

List<StudentDTO> studentDTOS = Lists.newArrayList();studentDTOS.add(new StudentDTO(1,'xixi'));studentDTOS.add(new StudentDTO(2,'houhou'));studentDTOS.add(new StudentDTO(3,'maomi'));Map<Integer, String> collect = studentDTOS.stream().collect( Collectors.toMap(StudentDTO::getStudentId, StudentDTO::getStudentName));System.out.println(JSON.toJSON(collect)); // {'1':'xixi','2':'houhou','3':'maomi'}

一. 坑1:Duplicate Key時拋出IllegalStateException異常

1. 概述

按照常規Java的Map思維,往一個map里put一個已經存在的key,會把原有的key對應的value值覆蓋。

但Java8中的Collectors.toMap()卻不是這樣。當key重復時,該方法默認會拋出IllegalStateException異常。

2. 大坑復現

public void streamToMap1() { List<StudentDTO> studentDTOS = Lists.newArrayList(); studentDTOS.add(new StudentDTO(1,'xixi')); studentDTOS.add(new StudentDTO(1,'houhou')); studentDTOS.add(new StudentDTO(3,'maomi')); Map<Integer, String> collect = studentDTOS.stream() .collect(Collectors.toMap(StudentDTO::getStudentId, StudentDTO::getStudentName)); System.out.println(JSON.toJSON(collect)); }

輸出結果

Java lambda list轉換map時,把多個參數拼接作為key操作

3. 大坑解決

法1:將toMap方法修改成如下形式,這樣就可以使用新的value覆蓋原有value。

studentDTOS.stream().collect(Collectors.toMap(StudentDTO::getStudentId,

StudentDTO::getStudentName,(oldValue, newValue) -> newValue));

輸出結果:{'1':'houhou','3':'maomi'}

法2:如果需要保留同一個key下所有的值,則可以對value做簡單的拼接,如下:

studentDTOS.stream().collect(Collectors.toMap(StudentDTO::getStudentId,

StudentDTO::getStudentName,(oldValue, newValue) -> oldValue + ',' + newValue));

輸出結果:

{'1':'xixi,houhou','3':'maomi'}

二. 坑2:value為空時拋出NullPointerException異常

1. 概述

當要轉化的map的value值中包含空指針時, 會拋出NullPointerException異常。

2. 大坑復現

public void streamToMap2() { List<StudentDTO> studentDTOS = Lists.newArrayList(); studentDTOS.add(new StudentDTO(1,'xixi')); studentDTOS.add(new StudentDTO(2,'houhou')); studentDTOS.add(new StudentDTO(3,null)); Map<Integer, String> collect = studentDTOS.stream().collect(Collectors .toMap(StudentDTO::getStudentId, StudentDTO::getStudentName)); System.out.println(JSON.toJSON(collect));}

輸出結果

Java lambda list轉換map時,把多個參數拼接作為key操作

3. 大坑解決

3.1 法1:value值判空設置

說明:如果是null,則設置成一個特定值。

studentDTOS.stream().collect(Collectors.toMap(StudentDTO::getStudentId, studentDTO

-> studentDTO.getStudentName()==null?'':studentDTO.getStudentName()));

輸出結果:

{'1':'xixi','2':'houhou','3':''}

3.2 法2:使用collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner)方法構建

說明:該方法允許null值。

Map<Integer, String> collect = studentDTOS.stream().collect(HashMap::new, (n, v) -> n.put(v.getStudentId(), v.getStudentName()), HashMap::putAll);for(Map.Entry<Integer, String> entry:collect.entrySet()){ System.out.println(entry.getKey()+'='+entry.getValue());}

輸出結果

1=xixi2=houhou3=null

3.3 使用Optional對值進行包裝

Map<Integer, Optional<String>> collect = studentDTOS.stream().collect(Collectors .toMap(StudentDTO::getStudentId, studentDTO -> Optional.ofNullable(studentDTO.getStudentName()))); for(Map.Entry<Integer, Optional<String>> entry:collect.entrySet()){ System.out.println(entry.getKey()+'='+entry.getValue().orElse(''));}

輸出結果

1=xixi2=houhou3=

以上這篇Java lambda list轉換map時,把多個參數拼接作為key操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
激情综合婷婷| 麻豆高清免费国产一区| 欧美激情aⅴ一区二区三区 | 国产精品草草| 久久久免费人体| 日本aⅴ亚洲精品中文乱码| 久久激情中文| 国产福利一区二区精品秒拍 | 亚洲综合不卡| 欧美黄色一区| 日韩超碰人人爽人人做人人添| 国产精品啊啊啊| 人人精品人人爱| 美女久久久久| 超碰99在线| 亚洲精品影视| 免费观看在线综合| 91中文字幕精品永久在线| 在线综合视频| 久久国产免费| 中文字幕在线视频网站| 国产福利资源一区| 国产人成精品一区二区三| 视频在线观看国产精品| 日本不卡视频在线观看 | 久久不射网站| 国产精品自拍区| 福利在线免费视频| 欧美日韩国产一区二区三区不卡| 亚洲综合在线电影| 石原莉奈一区二区三区在线观看| 88久久精品| 免费看欧美美女黄的网站| se01亚洲视频 | 欧美国产另类| 久久亚洲视频| 视频小说一区二区| 国产一区二区亚洲| 在线亚洲精品| 国产欧美一区二区三区精品酒店 | 在线观看免费一区二区| 久久97久久97精品免视看秋霞| 免费视频最近日韩| 久久成人国产| 啪啪国产精品| 亚洲最新无码中文字幕久久 | 中文字幕在线免费观看视频| 国产探花一区二区| 免费不卡在线观看| 欧美日韩高清| 91精品精品| 国产在线|日韩| 亚洲香蕉视频| 日韩1区2区日韩1区2区| 红杏一区二区三区| 国产精品一区二区99| 久久一区亚洲| 999精品在线| 亚洲资源网站| 日产精品一区二区| 国产精品毛片在线| 国产精品啊啊啊| 1024精品久久久久久久久| 日韩在线视频一区二区三区| 欧美日韩亚洲一区在线观看| 国产极品一区| 最新中文字幕在线播放 | 国产女人18毛片水真多18精品| 国产精品密蕾丝视频下载| 国产精品久一| 国产v日韩v欧美v| 亚洲午夜电影| 91嫩草精品| 精品国产美女a久久9999| sm捆绑调教国产免费网站在线观看| 黄色aa久久| 欧美成人国产| 亚洲专区视频| 欧美激情三区| 免费在线看一区| 欧美激情福利| 黑丝美女一区二区| 国产精品丝袜在线播放| 91视频一区| 国产亚洲一区在线| 精品国产不卡一区二区| 91久久视频| 成人在线超碰| 亚洲精品动态| 最新中文字幕在线播放 | 国产精品66| 亚洲综合电影一区二区三区| 美女久久久久久| 亚洲永久字幕| 91精品蜜臀一区二区三区在线| 91大神在线观看线路一区| 欧美成人综合| 日韩中文字幕高清在线观看| 亚洲三级网址| 一本色道久久精品| 91亚洲自偷观看高清| 国产精品调教视频| 91精品国产自产在线丝袜啪| 性色一区二区| 日韩欧美不卡| 超碰在线99| 日韩在线不卡| 日韩和的一区二在线| 另类小说一区二区三区| 日本一区中文字幕| 日本v片在线高清不卡在线观看| 久久午夜精品| 日韩精品免费一区二区三区| 成人日韩av| 在线视频精品| 色8久久久久| 激情欧美一区| 男人操女人的视频在线观看欧美| 中文字幕中文字幕精品| 亚洲我射av| 国产欧美日韩精品高清二区综合区 | 欧美国产亚洲精品| 精品免费视频| 99成人在线视频| 无码日韩精品一区二区免费| 欧美在线观看天堂一区二区三区| 国产精品久久久亚洲一区| 美女尤物国产一区| 久久久夜精品| 日本视频一区二区| 国产在视频一区二区三区吞精| av综合电影网站| 亚洲欧洲免费| 激情国产在线| 亚洲91在线| 久久免费黄色| 国产精品久久久久久久久久妞妞| 福利一区和二区| 亚洲欧美日韩专区| 国产网站在线| 日韩高清在线不卡| 久久中文字幕av| 国产精品欧美日韩一区| av亚洲在线观看| 国产一区二区三区四区五区| 国产亚洲欧洲| 在线看片福利| 国产日韩在线观看视频| 99re国产精品| 开心激情综合| 亚洲理论在线| 国产99精品一区| 成人午夜网址| 日韩不卡一二三区| 99成人在线| 99精品在线观看| 欧美国产美女| 卡一卡二国产精品| 国产精选一区| 日本午夜精品视频在线观看| 亚洲精华国产欧美| 天堂av在线| 国产精品极品在线观看| 亚州av一区| 亚洲精品福利| 一二三区精品| 老司机精品在线| 激情久久中文字幕| 久久三级福利| 日韩在线短视频| 精品久久久中文字幕| 国产精品久久久一区二区| 色综合视频一区二区三区日韩| 亚洲一区二区成人| 午夜久久tv| 亚洲我射av| 老司机久久99久久精品播放免费| 狠狠操综合网| 欧美精品一线| 伊人久久大香伊蕉在人线观看热v| 国产亚洲精品自拍| 日韩精品中文字幕吗一区二区 | 日本久久成人网| 亚洲www啪成人一区二区| 私拍精品福利视频在线一区| 久久久久久免费视频| 午夜国产精品视频| 中文字幕一区二区精品区| 日本亚洲视频| 欧美国产先锋| 伊人久久大香线蕉av不卡| 亚洲日本在线观看视频| 国产三级精品三级在线观看国产| 精品国产黄a∨片高清在线| 999视频精品| 日韩国产欧美在线视频| 久久精品九色| 在线视频日韩| 精品国产三区在线| 久久亚洲视频|