Java stream: 使用 Collectors 来 grouBy Map
Java stream: using Collectors to grouBy Map
我要改造:
Map<Integer, List<Integer>> result =
dre.getItems().stream().collect(
Collectors.groupingBy(DashboardEntity::getElementNumber,
Collectors.mapping(DashboardEntity::getTotalElement , Collectors.toList())
)
);
成(幼稚):
Map<Integer, List<String>> result =
dre.getItems().stream().collect(
Collectors.groupingBy(DashboardEntity::getElementNumber,
Collectors.mapping(DashboardEntity::getTotalElement + "_" DashboardEntity::getDate, Collectors.toList())
)
);
但后者会引发编译时错误:
Method reference expression is not expected here
获取类型 Map<Integer, Map<String, Integer>>
的 result
的方法是什么,其中 Map<String, Integer>
键将包含 date
(getDate
调用)和值 totalElement
(getTotalElement
调用)值,知道 date
和 totalElement
之间的关系是 1..1 ?
你必须使用lambda;你不能这样使用方法引用。
DashboardEntity::getTotalElement + "_" DashboardEntity::getDate
应该是
entity -> entity.getTotalElement() + "_" + entity.getDate()
我要改造:
Map<Integer, List<Integer>> result =
dre.getItems().stream().collect(
Collectors.groupingBy(DashboardEntity::getElementNumber,
Collectors.mapping(DashboardEntity::getTotalElement , Collectors.toList())
)
);
成(幼稚):
Map<Integer, List<String>> result =
dre.getItems().stream().collect(
Collectors.groupingBy(DashboardEntity::getElementNumber,
Collectors.mapping(DashboardEntity::getTotalElement + "_" DashboardEntity::getDate, Collectors.toList())
)
);
但后者会引发编译时错误:
Method reference expression is not expected here
获取类型 Map<Integer, Map<String, Integer>>
的 result
的方法是什么,其中 Map<String, Integer>
键将包含 date
(getDate
调用)和值 totalElement
(getTotalElement
调用)值,知道 date
和 totalElement
之间的关系是 1..1 ?
你必须使用lambda;你不能这样使用方法引用。
DashboardEntity::getTotalElement + "_" DashboardEntity::getDate
应该是
entity -> entity.getTotalElement() + "_" + entity.getDate()