我上课时说,CheeseMojo具有以下各个领域:
public class CheeseMojo {
private String recipies = "Recipies";
private int age;
private String name;
private int submissionId;
//getter/setter
}
现在我想使用Collectors.groupingBy函数基于submissionId对其进行排序,然后下面的代码片段就可以完成工作
Map<Integer,List<CheeseMojo>> map = new HashMap<>();
map = cheeseMojos.stream().collect(Collectors.groupingBy(CheeseMojo::getSubmissionId));
输出将如下所示:
{1=[CheeseMojo@111111],2=[CheeseMojo@222222]}
但我希望我的输出如下所示:
{"Recipies1"=[CheeseMojo@111111],"Recipies2"=[CheeseMojo@222222]}
请帮忙
最佳答案
为什么不在收集之前就只是map
键(比如说,通过创建具有以下内容的包装器类的实例
public class CheeseMojoWrapper {
private final String id;
private final CheeseMojo wrapped;
public CheeseMojoWrapper(CheeseMojo toWrap) {
id = "Recipe" + toWrap.getId();
wrapped = toWrap;
}
}
或在结果地图的
entrySet()
上使用流...