use*_*426 5 java java-8 java-stream
我有一个具有这样的值的Answer实体
question answer
1 x
2 y
3 z
4 p
1 x
2 q
3 r
Run Code Online (Sandbox Code Playgroud)
我需要逐个问题地得到答案
Map<Integer, List<String>>
<1, [x,x]
2, [y,p]
3, [z,r]
4, [p]>
Run Code Online (Sandbox Code Playgroud)
我可以List<Answer>
这样
Map<Integer, List<Answer>> collect = answers
.stream()
.collect(Collectors.groupingBy(Answer::getQuestion));
Run Code Online (Sandbox Code Playgroud)
但我找不到一种方法来获得它List<String>
而不是List<Answer>
?
Map<Integer, List<String>> collect = answers
.stream()
.collect(Collectors.groupingBy(
Answer::getQuestion,
Collectors.mapping(Answer::getAnswerAsString, Collectors.toList())
));
Run Code Online (Sandbox Code Playgroud)
只需用getAnswerAsString
你从中获取String的方法替换即可Answer
.