2017-03-20 17 views
5

I wprowadziły następujący przykład:Java 8 lambda Collectors.groupingBy na mapie w Collector.toList()

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

Jak mogę uzyskać moc Map<String, List<EventDto>> map zamiast?

An EventDto można uzyskać, wykonując zewnętrzną metodę, która przekształca Event w . Na przykład - this::convertFromEventToEventDto.

+1

Co jest 'EventDto' i jak jest ona związana z elementów swojej Stream? – Eran

+0

@eran Należy użyć funkcji zewnętrznej do przekonwertowania 'Event' na' EventDto'. Myślę, że w wyjaśnieniu można użyć dowolnej nazwy, jeśli z, lub na przykład 'this :: convertFromEventToEventDto' – Sergii

+1

Czy' EventDto' ma status? – shmosel

Odpowiedz

9

trzeba mappingCollector do mapowania Event elementy EventDto elementów:

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