java - 想要在 compareTo() 中将 Java.time.LocalDate 与 java.time.LocalTime 进行比较

标签 java compareto java-time

我有一个 Meeting实现 Comparable<Meeting> 的类.已覆盖 compareTo方法将比较meetingDate两个Meeting首先是对象,如果它们相等,它将比较它们的 meetingTime .我想把我所有的 Meeting ProirtiyQueue<Meeting> 中的对象这样我就可以根据他们的 meetingDate 检索即将举行的 session 和 meetingTime .使用的数据类型分别是 java.time.LocalDate 和 java.time.LocalTime。我如何比较meetingDatemeetingTime在我的 compareTo(Meeting o)方法。

 public class Meeting implements Comparable<Meeting> {

private String title;
private String desciption;
private LocalDate meetingDate;
private LocalTime meetingTime;

public Meeting(String title, String description, LocalDate meetingDate, LocalTime meetingTime) {
    this.title = title;
    this.desciption = description;
    this.meetingDate = meetingDate;
    this.meetingTime = meetingTime;

}

public String getTittle() {
    return title;
}

public void setTittle(String title) {
    this.title = title;
}

public String getDescription() {
    return desciption;
}

public void setDescription(String description) {
    this.desciption = description;
}

public LocalDate getMeetingDate() {
    return meetingDate;
}
public void setMeetingDate(LocalDate meetingDate) {
    this.meetingDate = meetingDate;
}

public LocalTime getMeetingTime() {
    return meetingTime;
}

public void setMeetingTime(LocalTime meetingTime) {
    this.meetingTime = meetingTime;
}

public int compareTo(Meeting o) {
    // comparison
}


}

最佳答案

您可以将 compareTo 的实现委托(delegate)给 Comparator,它可以对给定 Meeting 的多个属性进行链式比较:

public class Meeting {
    ...

    private static final Comparator<Meeting> comparator =
        Comparator.comparing(Meeting::getMeetingDate)
            .thenComparing(Meeting::getMeetingTime);

    @Override
    public int compareTo(Meeting that) {
        comparator.compare(this, that);
    }

关于java - 想要在 compareTo() 中将 Java.time.LocalDate 与 java.time.LocalTime 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894410/

相关文章:

java - SSLContext 的 Selenium NoClassDefFoundError

java - Java 中的日期比较

spring-mvc - Spring Boot 将表单数据解析为 ZonedDateTime (dd/MM/yyyy HH :mm)

java - 与 CompareTo 相比不同

java - 在 java.time.Period 类中,withDays()、withMonths()、withYears() 的作用是什么

java - LocalDateTime.format(DateTimeFormatter) 和 DateTimeFormatter.format(TemporalAccessor) 有什么区别?

java - 我如何在 JDBC 中使用 WHERE EXISTS 函数

java - 如何在@HandleBeforeSave 事件中获取旧实体值以确定属性是否已更改?

java - 构建快照时不会触发 Jenkins 多分支项目

java - 为什么我们在 Comparable 实现中的 CompareTo 中使用 `this`?