当前位置: 首页 > 知识库问答 >
问题:

比较Java8中的瞬间

郏实
2023-03-14

我有这个对象:

public class MatchEvent implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    private Instant dateReceived;

    public Instant getDateReceived() {
        return dateReceived;
    }


    public void setDateReceived(Instant dateReceived) {
        this.dateReceived = dateReceived;
    }

}

我想按收到日期排序;

matchService
            .findAllByDay(today)
                .sorted(Comparator.comparing(MatchEvent::dateReceived))

但这似乎是不可能的,因为我得到了一个编译错误:

Multiple markers at this line
    - The method comparing(Function<? super T,? extends U>) in the type Comparator is not applicable for the arguments 
     (MatchEvent::dateReceived)
    - The type MatchEvent does not define dateReceived(T) that is applicable here

共有1个答案

章承基
2023-03-14

类匹配事件中声明一个名为 getDate 接收() 的公共方法,如下所示:

public Instant getDateReceived(){
    return dateReceived;
}

然后,您可以使用此方法作为方法引用,如下所示:

Comparator.comparing(MatchEvent::getDateReceived)
 类似资料:
  • 假设我有一个双人课 我希望对它进行排序,首先是第一个值,然后是第二个值。现在,如果我这样做 一切都很好,列表按对的第一个值排序,但如果我这样做 它因错误而失败 好吧,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它适用于comparing()而不适用于comparing()。然后比较()?

  • 我想用Lambda对列表排序: 但我得到了这个编译错误:

  • 我有一个ArrayList,需要按降序排序。我用java来实现它。util。流动流动排序(比较器)方法。以下是根据Java API的描述: 返回由该流的元素组成的流,根据提供的

  • 我有一个关于compareTo函数如何帮助比较器排序的问题,即o1。比较(o2)与o2。比较(o1) 如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在词典上大于第二个字符串,则结果为正,否则结果为负。 上面的陈述很简单,但是为什么o1.compare(o2)会给我一个升序,而o2.compare(o1)给了我一个降序? 如果我有整数值“5,10,3”,我得到3,5,10和

  • 考虑到我有2个CPU核心的事实,并行版本不是应该更快吗?有人能给我一个提示为什么并行版本比较慢吗?

  • 我们有需要从Java7升级到Java8的代码。一大堆这样的片段: 我们利用了返回的优点,仅当键“status”有一个int值,但它不是0时。如果“状态”为0或被省略,它将返回。这是所需的行为。