Java 8 - сбор в карту из списка объектов с вложенным списком - PullRequest
0 голосов
/ 31 мая 2019

У меня есть класс с вложенным статическим классом, например:

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? Я попытался сопоставить вложенный список, но у меня возникла проблема с получением результатов.

1 Ответ

1 голос
/ 31 мая 2019

Если вы хотите 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())
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...