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

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

使用 java 8 從 list2<object> 更新 list1<object> 中的參數

使用 java 8 從 list2<object> 更新 list1<object> 中的參數

白衣染霜花 2022-12-07 15:09:38
我有兩個對象帳戶和薪水列表,我需要迭代對象列表。如果 ID 匹配,我需要更新帳戶對象。我有 list1 和 list2 這兩個對象是不同的對象類型。我們需要用 list2 object(param) 更新 list1 中的 object(param)。例子if(accounts !=null && salaries!=null) { // checking for nulls    for (Account obj1 : accounts) {// iterating objects        for (Salary obj2 : salaries) {            String id = ibj2.getId();            if (id.equals(obj1.getId())) {// id checks                  obj1.setxxxx(obj2.getxxxx());// set the value            }        }    }}  我試過了:list1.stream().flatMap(x -> list2 .stream() .filter(y -> x.getId().equals(y.getId())));
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

您的flatMap(在評論中建議)將產生一個Stream<Salary>,這將不允許您修改相應的Account實例。


您可以創建一個Streamof Accounts 及其相應的并在其上Salary運行:forEachStream


accounts.stream()

        .flatMap(a->salaries.stream()

                            .filter(s -> s.getID().equals(a.getID())

                            .map(s -> new SimpleEntry<Account,Salary)(a,s)))

        .forEach(e -> e.getKey().setxxxx(e.getValue().getxxxx()));


查看完整回答
反對 回復 2022-12-07
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

最后的操作,obj1.setxxxx(obj2.getxxxx());需要同時擁有obj1和obj2。指示從兩個列表流式傳輸的項目


list1.stream()

    .forEach(obj1 -> 

        list2.stream()

            .filter(obj2 -> obj1.getId().equals(obj2.getId()))

            .findFirst()

            .ifPresent(obj2 -> obj1.setxxxx(obj2.getxxxx()))

    );


查看完整回答
反對 回復 2022-12-07
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

我總是建議創建一個地圖,因為查找成本會降低并且它會變得更具可讀性。


Map<String, List<Salary>> salaryById = salaries.stream().collect(Collectors.groupingBy(Salary::getId));

accounts.forEach(a -> CollectionUtils.emptyIfNull(salaryById.get(a.getId())).forEach(s -> s.setxxxx(..)));

如果 Account Salary <-> Account 是一對一,您將分組更改為Collectors.toMap(..)


查看完整回答
反對 回復 2022-12-07
  • 3 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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