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

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

比較兩個(gè) java 列表并將元素添加到最終列表?

比較兩個(gè) java 列表并將元素添加到最終列表?

慕仙森 2023-04-13 14:31:50
我現(xiàn)在有兩個(gè)具有相同類型對象的列表,我正在嘗試比較這兩個(gè)列表并創(chuàng)建具有這些限制的最終列表dbRecord列表的所有記錄應(yīng)該在最終列表中可用如果兩個(gè)列表的對象labelName相同,則從列表dbrecord中更新列表的對象userRecord。如果在列表中發(fā)現(xiàn)任何額外記錄(與的列表對象userRecord比較),則應(yīng)將其添加到最終列表中。labelNamedbRecord我嘗試使用此代碼,但問題是它沒有將userRecord列表中找到的任何額外對象添加到最終列表List<Labels> dbRecord = roleRecord.getLabels();List<Labels> userRecord = role.getLabels();List<Labels> updatedLables = new ArrayList<>();boolean recordFound = false;            for (Labels labels : dbRecord) {                innerloop: for (Labels innerLabels : userRecord) {                    if (StringUtils.compare(labels.getLabelName().replaceAll("\\s+", "").toLowerCase(),                            innerLabels.getLabelName().replaceAll("\\s+", "").toLowerCase()) == 0) {                        recordFound = true;                        labels.setAccess(innerLabels.getAccess());                        labels.setMatch(innerLabels.getMatch());                        updatedLables.add(labels);                    }                    if (recordFound) {                        break innerloop;                    }                }                if (!recordFound) {                    updatedLables.add(labels);                }                recordFound = false;            }我在這段代碼中缺少什么邏輯?
查看完整描述

1 回答

?
德瑪西亞99

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

這樣的事情適合您的需要嗎?


List<Labels> dbRecord = roleRecord.getLabels();

        List<Labels> userRecord = role.getLabels();


        Map<String, Labels> labelsByName = dbRecord.stream()

            .collect(Collectors.toMap(this::getCorrectedLabelName, i -> i));


        userRecord.stream()

            .filter(label -> labelsByName.containsKey(getCorrectedLabelName(label)))

            .forEach(label -> labelsByName.put(getCorrectedLabelName(label), label));


        Collection<Labels> updatedLabels = labelsByName.values();


private String getCorrectedLabelName(Labels label) {

        return label.getLabelName().replaceAll("\\s+", "").toLowerCase();

    }

首先,您使用列表按名稱創(chuàng)建標(biāo)簽映射dbRecord。userRecord然后您可以輕松地從中找到與名稱匹配的那些,并為它們中的每一個(gè)替換地圖中的標(biāo)簽。


最后你收集地圖值!


PS:這都是假設(shè)Labels沒有重名!


希望這可以幫助


- - 編輯


 List<Labels> dbRecord = roleRecord.getLabels();

        List<Labels> userRecord = role.getLabels();


        // create Map from dbRecord

        Map<String, Labels> labelsByName = dbRecord.stream()

            .collect(Collectors.toMap(this::getCorrectedLabelName, i -> i));


        userRecord

            // for each of userRecord

            .forEach(userRecordLabel -> {

                // if in dbRecord, update dbRecord labels

                if(labelsByName.containsKey(getCorrectedLabelName(userRecordLabel))){

                    Labels dbRecordLabel = labelsByName.get(getCorrectedLabelName(userRecordLabel));

                    dbRecordLabel.setAccess(userRecordLabel.getAccess());

                    dbRecordLabel.setMatch(userRecordLabel.getMatch());


                    labelsByName.put(getCorrectedLabelName(userRecordLabel), dbRecordLabel);


                }else{// if not then add to map

                    labelsByName.put(getCorrectedLabelName(userRecordLabel), userRecordLabel);

                }

            });


        // final complete list

        Collection<Labels> updatedLabels = labelsByName.values();

這是應(yīng)該工作或你的完整更正代碼!


查看完整回答
反對 回復(fù) 2023-04-13
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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