2 回答
TA贡献1873条经验 获得超9个赞
您有两个嵌套map操作。外部将 a 转换contract为 a List<FeeAccount>,内部将 a 转换Fee为 a FeeAccount。
因此,您的管道导致Stream<List<FeeAccount>>没有终端操作。
如果你.collect(Collectors.toList())在最后添加一个,你会得到一个List<List<FeeAccount>>.
如果您想将所有这些内部列表合并到一个输出列表中,您应该使用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();
TA贡献1765条经验 获得超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转换Stream<Stream<FeeAccount>>
为Stream<FeeAccount>
添加回答
举报