簡體   English   中英

想比較compareTo()中的Java.time.LocalDate和java.time.LocalTime

[英]want compare Java.time.LocalDate & java.time.LocalTime in compareTo()

我有一個實現Comparable<Meeting>Meeting類。 重寫的compareTo方法將首先比較兩個Meeting對象的meetingDate ,如果它們相等,它將比較其meetingTime 我想將所有Meeting對象放在ProirtiyQueue<Meeting>以便我可以根據他們的meetingDatemeetingTime檢索即將召開的會議。 使用的數據類型分別是java.time.LocalDate和java.time.LocalTime。 如何在compareTo(Meeting o)方法中比較meetingDatemeetingTime

 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
}


}

您可以委托執行compareToComparator給定會議的多個屬性的它可以鏈接比較:

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);
    }

根據文檔,

Date.compareTo()

返回:如果此Date小於指定的Date,則返回int <0;如果它們相等則返回0;如果此Date更大,則返回int> 0。

Time.before()

如果此時間小於給定時間,則為true

然后你需要這樣的東西:

public int compareTo(Meeting o) {
    if (o == null)
      return (0);
    if (o.meetingDate.compareTo(meetingDate) == 0)
      return (o.meetingTime.before(meetingTime));
    else
      return (o.meetingDate.compareTo(meetingDate));
}

如果o在currentMeeting對象之前,則此函數將返回:“int <0”。 如果o在currentMeeting對象之后,則“int> 0”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM