尝试映射列表时出现不兼容类型错误

我有一个要填写的 FeeAccount 列表。我想使用 .stream.map() 来完成它。我设法做的是创建一个方法来映射我的列表并将其返回。我使用在网上找到的其他一些示例编写了这段代码。我的问题是它以某种方式返回了一个与 List 不兼容的列表。


我收到一个错误:不兼容的类型。必需列表,但“映射”被推断为流:不存在类型变量 R 的实例,因此流符合列表


据我了解,问题出在我使用collect(Collectors.toList()) 的部分。但我不确定。我什至不清楚错误消息的含义。


也许有人可以解释我做错了什么?它与 .stream.map() 一起使用吗?因为我以前从未使用过它。或者也许问题出在其他地方。


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());

            });}


鸿蒙传说
浏览 92回答 2
2回答

眼眸繁星

您有两个嵌套map操作。外部将 a 转换contract为 a List<FeeAccount>,内部将 a 转换Fee为 a FeeAccount。因此,您的管道导致Stream<List<FeeAccount>>没有终端操作。如果你.collect(Collectors.toList())在最后添加一个,你会得到一个List<List<FeeAccount>>.如果您想将所有这些内部列表合并到一个输出列表中,您应该使用flatMap.获得单位List:List<FeeAccount> feeAccounts =&nbsp;&nbsp; &nbsp; contractList.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .flatMap(contract -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; List<Fee> monthlyFees=...;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return monthlyFees.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(monthlyFee -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FeeAccount account = new FeeAccount();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; account.setFeeCode(monthlyFee.getFeeCode());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; account.setDebtorAccount(contract.getDebtorAccount());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return account;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList();

POPMUISE

map()是流管道中的中间操作(请参阅流操作和管道),这意味着它返回一个流。feeAccounts = contractList&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.map(...) // result of this operation is Stream<<List<FeeAccount>>&nbsp;and not a List<FeeAccount>您缺少终端操作,例如.collect(Collectors.toList():List<FeeAccount> feeAccounts = contractList&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.flatMap(monthlyFees -> monthlyFees.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(monthlyFee -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FeeAccount account = new FeeAccount();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; account.setFeeCode(monthlyFee.getFeeCode());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; account.setDebtorAccount(contract.getDebtorAccount());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return account;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.collect(Collectors.toList());flatMap转换Stream<Stream<FeeAccount>>为Stream<FeeAccount>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java