亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Lambda 表達式 java 8 過濾兩個映射并制作第三個映射

如何使用 Lambda 表達式 java 8 過濾兩個映射并制作第三個映射

森欄 2023-07-28 10:04:59
Map<String,String> persons = new HashMap<>();persons.put("aaaa@testing","123456789");persons.put("bbbb@testing","987654321");Map<String,UsersDTO> users = new HashMap<>();users.put("aaaa@testing", UsersDTO1);users.put("bbbb@testing",UsersDTO2);//Below one is the my required final map by using above two maps by using java 8 LambdasMap<String,UsersDTO> finalMap = new HashMap<>();finalMap.put("123456789",UsersDTO1);finalMap.put("987654321",UsersDTO2);如何finalMap利用上面兩張圖來制作呢?可能存在此類問題,但我想特別關注這一點,所以這就是我發布它的原因。如何使用 lambda 表達式進行生成?
查看完整描述

2 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

您可以這樣做,但請注意您將得到Map<String,UserDto>:


Map<String,UsersDTO> finalMap =

? ? ? ? persons.entrySet().stream()

? ? ? ? ? ? ? ? .collect(Collectors.toMap(Map.Entry::getValue, e-> users.get(e.getKey())));

如果電子郵件中的兩個地圖之間不匹配,您可以處理這種情況。例如,通過忽略條目:


Map<String, UsersDTO> finalMap =

? ? ? ? persons.entrySet().stream()

? ? ? ? ? ? ? ? .filter(e -> users.containsKey(e.getKey()))

? ? ? ? ? ? ? ? .collect(Collectors.toMap(Map.Entry::getValue, e -> users.get(e.getKey())));



查看完整回答
反對 回復 2023-07-28
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

我想你的意思是這樣的:

Map<String,?UsersDTO>?finalMap?=?users.entrySet().stream()
????????.collect(Collectors.toMap(user?->?persons.get(user.getKey()),?Map.Entry::getValue));

您需要另一個過濾器來確保每個條目都有匹配的:

Map<String,?UsersDTO>?finalMap?=?users.entrySet().stream()
????????.filter(user?->?persons.containsKey(user.getKey()))
????????.collect(Collectors.toMap(user?->?persons.get(user.getKey()),?Map.Entry::getValue));


查看完整回答
反對 回復 2023-07-28
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號