[英]Build org.joda.time.DateTime with java.time.LocalDate and java.time.LocalTime or java.time.LocalDateTime
[英]want compare Java.time.LocalDate & java.time.LocalTime in compareTo()
我有一個實現Comparable<Meeting>
的Meeting
類。 重寫的compareTo
方法將首先比較兩個Meeting
對象的meetingDate
,如果它們相等,它將比較其meetingTime
。 我想將所有Meeting
對象放在ProirtiyQueue<Meeting>
以便我可以根據他們的meetingDate
和meetingTime
檢索即將召開的會議。 使用的數據類型分別是java.time.LocalDate和java.time.LocalTime。 如何在compareTo(Meeting o)
方法中比較meetingDate
和meetingTime
。
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
到Comparator
給定會議的多個屬性的它可以鏈接比較:
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.