我有一个带有嵌套静态类的类,
public class User {
private final Long userId;
private final List<UserData> userData;
{...}
@Getter
public static class UserData {
private final Long customerId;
private final String customerName;
{...}
}
}
然后我有一个List<User> users
。
我想将users
映射到Map<User.userId, UserData.customerId>
。
所以地图看起来像这样:
1. userId1,customerId1
2. userId1,customerId2
3. userId1,customerId3
4. userId2,customerId4
5. userId2,customerId5
6. userId3,customerId6
等
有没有机会通过Java 8流来做到这一点?我尝试过对嵌套列表进行平面映射,但是在收集结果时遇到了问题。
答案 0 :(得分:1)
假设您要使用Map<User.userId, List<UserData.customerId>>
,可以使用以下方法:
Map<Long, List<Long>> result = users.stream()
.collect(Collectors.toMap(
User::getUserId,
u -> u.getUserData().stream()
.map(UserData::getCustomerId)
.collect(Collectors.toList())
));