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()));