java - Collectors.groupingBy 具有自定义键名称

标签 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对其进行排序,然后下面的代码片段将完成这项工作

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]}

请帮忙

最佳答案

为什么不在收集之前映射 key (比方说,通过创建一个包装类的实例,该包装类具有

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

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

或者在生成的 map 的 entrySet() 上使用流...

关于java - Collectors.groupingBy 具有自定义键名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60639123/

相关文章:

java - Mapstore 未从数据库 Hazelcast 加载数据

Java 8 流 : Defining collectors based on other collectors

java - 为什么方法引用与具有不同参数数量的功能接口(interface)兼容?

java 8 如果不存在,则将 List 的所有元素合并到 List 中

Java使用流中的重复元素创建多个列表

java - 当我必须在 Netty4 编码器中调用 ByteBuf.retain() 时?

java - 线程中出现异常 "main"java.lang.NullPointerException 错误。使用GPdraw

java - 如何集成EvoSuite测试用例生成工具

java - GWT 源构建失败

java - 将 lambda 作为具有泛型类型的参数传递 - java 8