我有以下对象

Class Trade{
   private Integer tradeId;
   private Event  eventId;
   private Integer tradeVersion;
}

Class Event{
  private Integer value;
}
  • 对于上述情况,我正在尝试编写类似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()));
    

    还要注意,带有Comparator.comparing(Trade::getEventId).thenComparing(Event::getValue)的版本在语义上意味着您首先要按照eventId进行排序,然后再按照value进行排序,这看起来并不是您最初想要的。

    10-05 21:34