我尝试使用Collectors.toMap
调用将列表转换为地图。该列表由ActivityReconcile
个对象组成。我想将列表中每个条目的实例传递给toMap
调用。
代码在下面,我需要实例的地方用??。
表示final List<ActivityReconcile> activePostedList = loader.loadActivePosted(accessToken);
Map<AccountTransactionKey, ActivityReconcile> postedActiveMap =
activePostedList.stream().collect(
Collectors.toMap(
AccountTransactionKey.createNewAccountTransactionKeyFromActivityReconcileRecord(??),??));
答案 0 :(得分:4)
如果我理解正确,你需要像
这样的东西Map<AccountTransactionKey, ActivityReconcile> result = choices
.stream()
.collect(Collectors.toMap(
AccountTransactionKey::generate,
Function.identity()));
方法(在AccountTransactionKey
类中)看起来像
public static AccountTransactionKey generate(ActivityReconcile reconcile) {...}
我已将createNewAccountTransactionKeyFromActivityReconcileRec
替换为generate
,以使答案更具可读性和易懂性。
答案 1 :(得分:3)
要使用最少的更改“修复”代码,请添加lambda参数:
activePostedList.stream().collect(Collectors.toMap(
ar -> AccountTransactionKey.createNewAccountTransactionKeyFromActivityReconcileRecord(ar)),
o -> o));
或使用方法参考:
activePostedList.stream().collect(Collectors.toMap(
AccountTransactionKey::createNewAccountTransactionKeyFromActivityReconcileRecord, o -> o));
顺便说一句,我记不起只要createNewAccountTransactionKeyFromActivityReconcileRecord
看到一个方法名称 - 为了便于阅读,请考虑将其减少到create()
,因为返回类型和参数类型足以区分它来自您可能拥有的其他工厂方法。