Как использовать group by для получения списка новых столбцов в сущности - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть объект Ответ, который имеет такие значения

question answer 
1           x
2           y
3           z
4           p
1           x
2           q
3           r

Мне нужно получить группу ответов по вопросам

Map<Integer, List<String>>
<1, [x,x]
 2, [y,p]
 3, [z,r]
 4, [p]>

Я мог бы получить List<Answer> вот так

Map<Integer, List<Answer>> collect = answers
    .stream()
    .collect(Collectors.groupingBy(Answer::getQuestion));

но я не могу найти способ получить его как List<String> вместо List<Answer>?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы можете сделать это так,

Map<Integer, List<String>> collect = answers.stream()
    .collect(Collectors.groupingBy(Answer::getQuestion, 
        Collectors.mapping(Answer::getAnswer, Collectors.toList())));
0 голосов
/ 19 декабря 2018
 Map<Integer, List<String>> collect = answers
         .stream()
          .collect(Collectors.groupingBy(
                Answer::getQuestion,
                Collectors.mapping(Answer::getAnswerAsString, Collectors.toList())       
));

просто замените getAnswerAsString на любой метод, который у вас есть, чтобы получить эту строку из Answer.

...