【发布时间】:2019-11-27 02:03:45
【问题描述】:
我需要一些帮助来映射 Map<String, List<Fee>> 和 List<FeeRequest>。
Fee 对象如下所示:
private String feeCode;
FeeRequest 对象如下所示:
private String feeCode;
private String debtorAccount;
所以我需要的是映射:
字符串 debtorAccount(来自地图) -> debtorAccount(来自列表)
feeCode(来自地图列表) -> feeCode(来自列表)
我想尝试不使用foreach,而是学习正确使用.stream().map() 功能。
我已经做到了:
Map<String, List<Fee>> feeAccounts 是从另一个方法中解析出来的。
List<FeeRequest> feeRequests = feeAccounts.entrySet().stream().map(feeAcc -> {
FeeRequest request = new FeeRequest();
request.setDebtorAccount(feeAcc.getKey());
request.setFeeCode(...);
return request;
}).collect(Collectors.toList());
我认为我的方法很糟糕,但我不知道如何让它发挥作用。我试着看一些例子,但它们太基础了。所以我很乐意得到任何帮助。谢谢!
【问题讨论】:
-
I think that my approach is bad- 为什么? -
@Eran 因为我无法映射费用代码,它没有显示费用对象字段
-
您可以使用
feeAcc.getValue()访问List<Fee>。不过,尚不清楚您希望用它做什么。 -
@Eran 基本上我想要的是
FeeRequest.setFeeCode(Fee.getFeeCode())。一个列表映射中的费用代码与另一个列表中的费用代码 -
但是输入 Map 的每个条目都包含一个
List的Fee实例。您希望使用其中的哪一个?还是要创建多个FeeRequest实例(每个Fee实例一个)?