Java 8 lambda Collectors.groupingBy with Collector.toList()中的map

时间:2017-03-20 08:31:06

标签: java lambda java-8 java-stream

我已经实现了以下示例:

Map<String, List<Event>> map = events.getItems().stream()
        .collect(Collectors.groupingBy(Event::getStatus, Collectors.toList()));

如何获得Map<String, List<EventDto>> map的输出?

通过执行将EventDto转换为Event的外部方法,可以获得EventDto。例如 - this::convertFromEventToEventDto

1 个答案:

答案 0 :(得分:13)

您需要mapping CollectorEvent元素映射到EventDto元素:

Map<String, List<EventDto>> map = 
    events.getItems()
          .stream()
          .collect(Collectors.groupingBy(Event::getStatus, 
                                         Collectors.mapping(this::convertFromEventToEventDto,
                                                            Collectors.toList())));