我有一个像
这样的清单List<Event>
其中Event具有eventId,eventName,groupId等属性。可以有多个属于同一组的事件。我想要一张像
这样的地图Map<Long, Event>
其中key是groupId,Event是具有max eventId的那个。所以,基本上我只想对属于同一组的事件列表进行排序,然后找出具有可用作值的最大事件Id的事件。我不确定如何实现这一目标。请协助。
我想在单行代码中使用lambda实现这一点。
答案 0 :(得分:1)
您可以尝试这样的事情:
Map<Long, Event> result = events.stream().collect(
Collectors.toMap( (e) -> e.getGroupid() , (e) -> e,
(e1, e2) -> e1.getEventId().compareTo( e2.getEventId() ) > 0 ? e1 : e2 ) );