第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從根據(jù) List<String> 過(guò)濾的嵌套 HashMap<String, HashMap

從根據(jù) List<String> 過(guò)濾的嵌套 HashMap<String, HashMap

慕容708150 2023-09-27 21:24:43
我有一個(gè)嵌套的 String HashMap 和一個(gè)對(duì)象列表。該對(duì)象有一個(gè) String 屬性,用于與內(nèi)部 HashMap 的值進(jìn)行匹配。stream()我正在嘗試使用Collectors以下 java 代碼找到一個(gè)單獨(dú)的襯墊HashMap<String, HashMap<String, String>>PartDetailsHMap=new HashMap<String, HashMap<String, String>>()List<Part> partList=new ArrayList<Part>();for(int i=0;i<partList.size();i++)    String partId = partList.get(i).getPropertyValue("part_id");    for(HashMap< String, String> PartPropsHMap:PartDetailsHMap.values())    {        if(PartPropsHMap.containsValue(itemId))        {            collectingPartMap.put(partList.get(i), PartPropsHMap);            break;        }    }}如果需要,我可以提取List<String>.正在尋找一款使用 的單襯管stream()。
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

像這樣的東西應(yīng)該有效:


    Map<String, Map<String, String>> PartDetailsHMap = new HashMap<>();

    List<Part> partList = new ArrayList<>();


    Map<Part, Map<String, String>> collectingPartMap = partList.stream()

      .map(part -> PartDetailsHMap.values()

        .stream()

        .filter(partPropsHMap -> partPropsHMap.containsValue(part.getPropertyValue("part_id")))

        .findFirst()

        .map(partPropsHMap -> new SimpleEntry<Part, Map>(part, partPropsHMap))

        .get()

      )

      .collect(toMap(Map.Entry::getKey, Map.Entry::getValue));

我使用了SimpleEntry類來(lái)AbstractMap將上下文Part以及我們找到的地圖傳遞給下一個(gè)操作 - collect。


警告:我覺(jué)得如果沒(méi)有流的選項(xiàng)更干凈并且能完成工作,我會(huì)選擇它。鑒于這里需要的操作相當(dāng)復(fù)雜,從長(zhǎng)遠(yuǎn)來(lái)看,保持其可讀性比巧妙的做法更有好處。


查看完整回答
反對(duì) 回復(fù) 2023-09-27
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

get另一種稍微改進(jìn)當(dāng)前答案的方法可能是在沒(méi)有檢查的情況下不執(zhí)行 a isPresent。filter這可以通過(guò)使用和來(lái)實(shí)現(xiàn)map


Map<Part, Map<String, String>> collectingPartMap = partList.stream()

        .map(part -> partDetailsHMap.values().stream()

                .filter(innerMap -> innerMap.containsValue(part.getPartId())) // notice 'getPartId' for the access

                .findFirst()

                .map(firstInnerMap -> new AbstractMap.SimpleEntry<>(part, firstInnerMap)))

        .filter(Optional::isPresent)

        .map(Optional::get)

        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));


查看完整回答
反對(duì) 回復(fù) 2023-09-27
  • 2 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)