Java 8 如何将列表转换为映射<;K、 V>;但不是列表<;V>;

Java 8 如何将列表转换为映射<;K、 V>;但不是列表<;V>;,java-8,Java 8,现在我想将列表转换为地图,例如 TaskStat t1 = new TaskStat("foo1", "bar1", 1); TaskStat t2 = new TaskStat("foo1", "bar2", 2); ArrayList<TaskStat> list = newArrayList(t1, t2); Map<String, List<TaskStat>> map = list.stream().collect(

现在我想将列表转换为地图,例如

    TaskStat t1 = new TaskStat("foo1", "bar1", 1);
    TaskStat t2 = new TaskStat("foo1", "bar2", 2);
    ArrayList<TaskStat> list = newArrayList(t1, t2);

    Map<String, List<TaskStat>> map = list.stream().collect(groupingBy(e -> e.getA() + "_" + e.getB()));

    assertEquals(1,map.get("foo1_bar1").get(0).getCount());
所以每个a+b只有一条记录


如何将列表转换为
映射而不是列表?

使用
收集器.toMap
而不是
收集器.groupingBy

 Map<String, TaskStat> result = 
     list.stream().collect(Collectors.toMap(ts -> ts.getA() + "_" + ts.getB(), 
                                  Function.identity()));
映射结果=
list.stream(),
Function.identity());
 Map<String, TaskStat> result = 
     list.stream().collect(Collectors.toMap(ts -> ts.getA() + "_" + ts.getB(), 
                                  Function.identity()));