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

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

嘗試映射列表時出現(xiàn)不兼容類型錯誤

嘗試映射列表時出現(xiàn)不兼容類型錯誤

鴻蒙傳說 2023-03-17 13:48:03
我有一個要填寫的 FeeAccount 列表。我想使用 .stream.map() 來完成它。我設(shè)法做的是創(chuàng)建一個方法來映射我的列表并將其返回。我使用在網(wǎng)上找到的其他一些示例編寫了這段代碼。我的問題是它以某種方式返回了一個與 List 不兼容的列表。我收到一個錯誤:不兼容的類型。必需列表,但“映射”被推斷為流:不存在類型變量 R 的實例,因此流符合列表據(jù)我了解,問題出在我使用collect(Collectors.toList()) 的部分。但我不確定。我什至不清楚錯誤消息的含義。也許有人可以解釋我做錯了什么?它與 .stream.map() 一起使用嗎?因為我以前從未使用過它?;蛘咭苍S問題出在其他地方。Method(List<contract> contractList){ List<FeeAccount> feeAccounts = new ArrayList<>();    feeAccounts = contractList            .stream()            .map(contract -> {                List<Fee> monthlyFees=...;                return monthlyFees.stream()                        .map(monthlyFee -> {                            FeeAccount account = new FeeAccount();                            account.setFeeCode(monthlyFee.getFeeCode());                            account.setDebtorAccount(contract.getDebtorAccount());                            return account;                        }).collect(Collectors.toList());            });}
查看完整描述

2 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

您有兩個嵌套map操作。外部將 a 轉(zhuǎn)換contract為 a List<FeeAccount>,內(nèi)部將 a 轉(zhuǎn)換Fee為 a FeeAccount。


因此,您的管道導(dǎo)致Stream<List<FeeAccount>>沒有終端操作。


如果你.collect(Collectors.toList())在最后添加一個,你會得到一個List<List<FeeAccount>>.


如果您想將所有這些內(nèi)部列表合并到一個輸出列表中,您應(yīng)該使用flatMap.


獲得單位List:


List<FeeAccount> feeAccounts = 

    contractList.stream()

                .flatMap(contract -> {

                    List<Fee> monthlyFees=...;

                    return monthlyFees.stream()

                                      .map(monthlyFee -> {

                                          FeeAccount account = new FeeAccount();

                                          account.setFeeCode(monthlyFee.getFeeCode());

                                          account.setDebtorAccount(contract.getDebtorAccount());

                                          return account;

                                      });

                })

                .collect(Collectors.toList();


查看完整回答
反對 回復(fù) 2023-03-17
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊

map()是流管道中的中間操作(請參閱流操作和管道),這意味著它返回一個流。

feeAccounts = contractList

           .stream()

           .map(...) // result of this operation is Stream<<List<FeeAccount>> 

and not a List<FeeAccount>

您缺少終端操作,例如.collect(Collectors.toList():


List<FeeAccount> feeAccounts = contractList

           .stream()

           .flatMap(monthlyFees -> monthlyFees.stream()

                        .map(monthlyFee -> {

                            FeeAccount account = new FeeAccount();

                            account.setFeeCode(monthlyFee.getFeeCode());

                            account.setDebtorAccount(contract.getDebtorAccount());

                            return account;

                        })

           .collect(Collectors.toList());

flatMap轉(zhuǎn)換Stream<Stream<FeeAccount>>Stream<FeeAccount>



查看完整回答
反對 回復(fù) 2023-03-17
  • 2 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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