我有以下对象
Class Trade{
private Integer tradeId;
private Event eventId;
private Integer tradeVersion;
}
Class Event{
private Integer value;
}
Run Code Online (Sandbox Code Playgroud)
Comparator.comparing(Trade::getEventId().getValue())所以现在我使用通常的 lambda ,如下所示
someList.sort((Trade o1, Trade o2) -> o1.getEventId().getValue().compareTo(o2.getEventId().getValue()));
它有效,但很想知道#1 是否可能?
Comparator.comparing(Trade::getEventId).thenComparing(Event::getValue)但没有喜悦。这很简单:
trades.sort(Comparator.comparingInt(x -> x.getEventId().getValue()));
Run Code Online (Sandbox Code Playgroud)
另请注意,您的版本在Comparator.comparing(Trade::getEventId).thenComparing(Event::getValue)语义上意味着您首先要进行排序eventId,value这看起来并不是您想要的。