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> 键将包含 dategetDate 调用)和值 totalElementgetTotalElement 调用)值,知道 datetotalElement 之间的关系是 1..1 ?

你必须使用lambda;你不能这样使用方法引用。

DashboardEntity::getTotalElement + "_" DashboardEntity::getDate

应该是

entity -> entity.getTotalElement() + "_" + entity.getDate()