Java 8 收集到 Map<String, List<Object>>

标签 java java-8

我有两个对象。第一个:

public final class Object1 {
    private String a;
    private String b;
    // constructor getter and setter
}

第二个:

public class Object2 {
    private BigDecimal value1;
    private BigDecimal value2;
    // constructor getter and setter
}

我有一个 Map<Object1, Object2> :

    Object1{a="15", b="XXX"}, Object2{value1=12.1, value2=32.3}
    Object1{a="15", b="YYY"}, Object2{value1=21.1, value2=24.3}
    Object1{a="16", b="AAA"}, Object2{value1=34.1, value2=45.3}
    Object1{a="15", b="BBB"}, Object2{value1=23.1, value2=65.3}
    Object1{a="15", b="DDD"}, Object2{value1=23.1, value2=67.3}
    Object1{a="17", b="CCC"}, Object2{value1=78.1, value2=2.3}
........

我想将此 map 与 Object2 列表中的相同 a 分组,例如:

a="15", {{value1=12.1, value2=32.3}, {value1=21.1, value2=24.3}, {value1=23.1, value2=65.3}, {value1=23.1, value2=67.3}},
a="16", {{value1=34.1, value2=45.3}}
...

我尝试这样的事情:

Map<String, List<Object2>> map1 = map.entrySet()
   .stream()             
   .collect(Collectors.toMap(e -> e.getKey().getA(), list of object with this key);

最佳答案

yourMap.entrySet()
       .stream()
       .collect(Collectors.groupingBy(e -> e.getKey().getA(),
               Collectors.mapping(Entry::getValue, Collectors.toList())))

关于Java 8 收集到 Map<String, List<Object>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48338050/

相关文章:

Java 从具有多个条件的列表中搜索子列表

java - 如何使用 Spring + iBatis 解决我的应用程序中的设计问题

Java比较整数和bigInteger

java - 如果增加迭代次数,顺序流比并行流更快

java - JAX-RS 和 java.time.LocalDate 作为输入参数

java - 流/fork-join 如何线程安全地访问数组?

java - Spring Security 在 Spring Boot 中检索用户名时提供 Null 身份验证

java - 在 java 中的 try-catch block 之后使用 "finally"有什么好处?

Java 流 |按相同元素分组

Java 8 流经多个层并连接最底层的所有项目