2 回答
TA贡献2041条经验 获得超4个赞
该findAllByMatch方法正在返回一个List<MatchEvent>.
并且该List.sort(someComparator)方法返回void,即它不返回任何内容,因为它就地对列表进行排序。所以你不能将调用链接到forEach(someConsumer).
解决您的问题的一种方法是使用 aStream而不是 a List:
List<MatchEventMobileApp> matchEventMobileApp = matchEventService
.findAllByMatch(SOME_MATCH)
.stream()
.sorted(Comparator.comparing(MatchEvent::getDateReceived))
.map(de -> new MatchEventMobileApp(de)) // or MatchEventMobileApp::new
.collect(Collectors.toList()); // better collect to a new list instead of
// adding to an existing one within forEach
这样一来,你现在有工作Stream,其sorted方法返回另一个Stream(已排序的),可以在其上调用终端操作,即collect,forEach,anyMatch等等。
另一种可能性是将列表提取到变量中并使用它:
List<MatchEvent> list = matchEventService.findAllByMatch(SOME_MATCH);
list.sort(Comparator.comparing(MatchEvent::getDateReceived));
list.forEach(de -> matchEventMobileApp.add(new MatchEventMobileApp(de)));
TA贡献1865条经验 获得超7个赞
List<MatchEventMobileApp> matchEventMobileApp = matchEventService .findAllByMatch(“JVT”) .stream() .sorted(Comparator.comparing(MatchEvent::getDateReceived)) .map(MatchEventMobileApp::new) .collect(Collectors.toList());
添加回答
举报