Обработка List внутри Map через Stream API

Всем привет! Есть задача получить новый список объектов из объектов внутри map за один проход через Stream API.

  • Есть Map<Boolean, List<User>> in;
  • Есть class UserNew(User user, Boolean b);
  • Нужно получить List<UserNew> из in (либо как промежуточный вариант, хотя бы Map<User, Boolean>).

Проблема в том, что как только из списков внутри map делаю stream, уже не могу вернуться к keySet().

Делал так:

List<UserNew> result=
   in.entrySet().stream()
      .flatMap(entry -> entry.getValue().stream())
      .map(user -> {
      return new UserNew(
      user,
      __вот здесь нужно получить key из map__);
      })
      .collect(Collectors.toList())

Важное условие сделать это за один проход.


Ответы (1 шт):

Автор решения: Дмитрий

Можно обмануть судьбу))

List<UserNew> result = in.entrySet().stream()
        .flatMap(entry -> entry.getValue().stream().map(user->new UserNew(user, entry.getKey())))
        .collect(Collectors.toList());
→ Ссылка