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

您的位置:首頁技術(shù)文章
文章詳情頁

Java lambda list轉(zhuǎn)換map時,把多個參數(shù)拼接作為key操作

瀏覽:206日期: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));

補(bǔ)充知識: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. 概述

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

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

2. 大坑復(fù)現(xiàn)

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)); }

輸出結(jié)果

Java lambda list轉(zhuǎn)換map時,把多個參數(shù)拼接作為key操作

3. 大坑解決

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

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

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

輸出結(jié)果:{'1':'houhou','3':'maomi'}

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

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

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

輸出結(jié)果:

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

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

1. 概述

當(dāng)要轉(zhuǎn)化的map的value值中包含空指針時, 會拋出NullPointerException異常。

2. 大坑復(fù)現(xiàn)

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));}

輸出結(jié)果

Java lambda list轉(zhuǎn)換map時,把多個參數(shù)拼接作為key操作

3. 大坑解決

3.1 法1:value值判空設(shè)置

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

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

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

輸出結(jié)果:

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

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

說明:該方法允許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());}

輸出結(jié)果

1=xixi2=houhou3=null

3.3 使用Optional對值進(jìn)行包裝

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(''));}

輸出結(jié)果

1=xixi2=houhou3=

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

標(biāo)簽: Java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品91久久久久| 亚洲精品日韩久久| 亚洲精品乱码| 三级亚洲高清视频| 精品一区二区三区亚洲 | 在线日韩成人| 欧美日韩国产探花| 国产一区二区视频在线看| 日韩高清在线不卡| 亚洲乱码久久| 国产亚洲欧洲| 中文久久精品| 久色成人在线| 久久电影一区| 中文字幕免费精品| 日韩在线电影| 青青草视频一区| 国产日韩免费| 欧美三区不卡| 久久精品伊人| 国产va免费精品观看精品视频| 精品三级av在线导航| 久久天堂影院| 伊伊综合在线| 99久久婷婷这里只有精品| 欧美日中文字幕| 久久一区二区三区喷水| 99久久夜色精品国产亚洲1000部| 神马午夜在线视频| 日韩高清成人| 激情综合自拍| 亚洲色诱最新| 日韩一区免费| 日韩精品导航| 美女毛片一区二区三区四区最新中文字幕亚洲| 欧美亚洲三区| 免费亚洲一区| 久久天堂精品| 红桃视频国产精品| 蜜桃久久av一区| 亚洲精一区二区三区| 日韩精品亚洲专区| 国产精品v日韩精品v欧美精品网站| 国产aa精品| 91成人网在线观看| **爰片久久毛片| 午夜日韩福利| 在线人成日本视频| 亚洲一区导航| 欧美精品资源| 国产福利一区二区精品秒拍 | 国内精品伊人| 亚洲一区欧美| 久久精品1区| 久久gogo国模啪啪裸体| 免费精品视频| 99国产精品免费视频观看| 日韩影院免费视频| 成人在线超碰| 国产欧美一级| 亚洲精品乱码| 亚洲欧美视频| 色综合www| 成人免费一区| 欧美伊人久久| 蜜桃av一区二区在线观看| 99国产精品免费视频观看| 日韩成人a**站| 欧美黄页在线免费观看| 日韩av一区二区在线影视| 久久都是精品| 一本一道久久a久久精品蜜桃| 成人黄色av| 久久激情五月婷婷| 亚洲综合小说| 亚洲一区二区小说| 男女性色大片免费观看一区二区| 亚洲男女av一区二区| 激情六月综合| 欧美成人综合| 亚洲精品在线观看91| 欧美不卡高清| 欧美午夜不卡| 国产亚洲在线观看| 久久国产福利| 亚洲图片久久| 亚洲综合福利| 日韩精品一级| 四虎精品一区二区免费| 亚洲区欧美区| 日本色综合中文字幕| 日韩和欧美的一区| 欧美日本不卡| 美女av一区| 日韩在线视频精品| 久久久久免费av| 91久久黄色| 欧美专区18| 中文字幕亚洲影视| 日韩精品高清不卡| 国产欧美在线| 国产91在线播放精品| 天堂中文av在线资源库| 超碰成人av| 亚洲手机在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 蜜桃av一区二区三区电影| 日韩一区二区三区高清在线观看| 久久国产精品免费精品3p | 亚洲性视频h| 国产精品美女| 亚洲视频国产精品| 欧美精品三级在线| 久久久久伊人| 欧美日韩国产观看视频| 日韩综合精品| 亚洲高清成人| 亚洲丝袜啪啪| 久久超级碰碰| 日韩精品午夜| 中文字幕日本一区二区| 国产精品99久久久久久董美香| 久草免费在线视频| 一区二区自拍| 欧美日韩a区| 日本在线高清| 免播放器亚洲一区| 国产精品美女午夜爽爽| 日本高清不卡一区二区三区视频| 日韩视频免费| 日本精品久久| 日韩大片在线观看| 中文无码久久精品| 精品理论电影在线| 夜久久久久久| 麻豆国产精品777777在线| 国产99久久久国产精品成人免费| 亚洲三级毛片| 中文字幕一区久| 蜜臀av一区二区在线免费观看| 国产精品扒开腿做爽爽爽软件| 欧美成人精品三级网站| 亚洲精选成人| 樱桃视频成人在线观看| 亚洲综合色婷婷在线观看| 久久精品九色| 亚洲一级在线| 成人国产综合| 亚洲18在线| 色婷婷久久久| 国产精品一区二区av交换| 国产精品99一区二区| 国产精品玖玖玖在线资源| 日韩一区二区免费看| 欧美激情精品| 亚洲丝袜啪啪| 99tv成人| 久久精品一区二区三区中文字幕| 日韩中文字幕91| 国产一区白浆| 久久精品国产网站| 日韩毛片在线| 伊人久久成人| 好吊一区二区三区| 国产精品调教| 视频在线观看一区二区三区| 久久中文字幕导航| 日本91福利区| 亚洲欧洲一区| 日韩视频网站在线观看| 国产情侣久久| 亚洲区第一页| 91精品观看| 日韩啪啪电影网| 美女久久99| 亚洲精品美女| 国产亚洲一级| 激情欧美国产欧美| 亚洲成a人片| 精品国产免费人成网站| 乱一区二区av| 欧美激情五月| 国产麻豆一区二区三区精品视频| 在线精品视频一区| 亚洲作爱视频| 99综合视频| 野花国产精品入口| 欧美亚洲精品在线| 欧洲av一区二区| 在线亚洲人成| 国内自拍视频一区二区三区| 国产日韩欧美一区二区三区| 亚洲青青久久| 中文字幕亚洲精品乱码| 鲁大师成人一区二区三区| 久久国产高清| 免费观看日韩电影| 男女男精品网站| 日韩精品欧美精品| 欧美日本一区|