Как сгруппировать поток на карту, используя определенный ключ и значение? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть Stream<Pair<String, String>> myStream;, и я хотел бы объединить его в Map<String, Set<String>> result;

Мне удалось получить следующее:

Map<String, Set<Pair<String, String>>> result = myStream
  .collect(Collectors.groupingBy(Pair::getKey, Collectors.toSet()));

Это не с "Нена статический метод нельзя ссылаться из статического контекста ":

Map<String, Set<String>> result = myStream
  .collect(Collectors.groupingBy(Pair::getKey, Pair::getValue, Collectors.toSet()));

Что я делаю не так?

1 Ответ

0 голосов
/ 09 февраля 2019

Правильный код:

Map<String, Set<String>> result = myStream
  .collect(Collectors.groupingBy(Pair::getKey,
              Collectors.mapping(Pair::getValue, Collectors.toSet())));

Если вы используете import static, он сокращается до:

Map<String, Set<String>> result = myStream
  .collect(groupingBy(Pair::getKey, mapping(Pair::getValue, toSet())));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...