Java 具有自定义密钥名称的Collectors.groupingBy

Java 具有自定义密钥名称的Collectors.groupingBy,java,java-8,java-stream,Java,Java 8,Java Stream,我有一门课,比如说CheeseMojo,有如下不同的领域: public class CheeseMojo { private String recipies = "Recipies"; private int age; private String name; private int submissionId; //getter/setter } 现在我想使用Collectors.groupingBy函数根据submissionId对其进行排序,然后下

我有一门课,比如说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]}

请帮助

为什么不在收集之前映射密钥(比如创建一个具有

public class CheeseMojoWrapper { 
    private final String id;
    private final CheeseMojo wrapped;

    public CheeseMojoWrapper(CheeseMojo toWrap) {
        id = "Recipe"  + toWrap.getId();
        wrapped = toWrap;
   }
}

或者在生成的映射的
entrySet()
上使用流…

您希望如何拥有一个具有两个相同键的映射?键是什么,存储的对象是什么?您描述了一个没有唯一键的映射,我不确定存储的对象是什么,但我假设它仍然是一个列表。它可以是
{“Recipies”=[CheeseMojo@111111, CheeseMojo@222222]}
,但是使用适当的数据类型,例如
映射
映射不能有两个相同的键。您应该使用另一个数据结构,或者更改所需的输出。好的,对不起,我的错误。更新了查询,请检查