我上课时说,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()上使用流...

08-25 06:36