如何创建一个从其他地图获取值然后将其映射到其字段的地图?

时间:2019-07-10 08:23:58

标签: java collectors

所以我有一个id到systemUsers的映射,现在我想创建一个systemUser键和登录值的映射。登录是systemUser类中的一个字段。我对如何编写映射器函数存在疑问,即使这是正确的解决方法

Map<Long, PHSystemUser> systemUserMap = getPersistenceLogic()
                      .getSystemUsersMap(serviceClientMap.values());

Map<PHSystemUser, String> loginMap = systemUserMap.values().stream()
                      .map(PHSystemUser::getLogin)
                      .collect(Collectors.toMap(, ));

1 个答案:

答案 0 :(得分:0)

您需要的是直接使用两个功能进行收集:

systemUserMap.values().stream()
   .collect(Collectors.toMap(Function.identity(), PHSystemUser::getLogin));

.map(PHSystemUser::getLogin)的问题在于它将流更改为Stream<String>,使您没有机会将整个PHSystemUser对象置于下游。