我有一个实现Meeting
的{{1}}类。重写Comparable<Meeting>
方法会首先比较两个compareTo
个对象的meetingDate
,如果它们相等,则会比较它们的Meeting
。我想将所有meetingTime
个对象放在Meeting
中,以便我可以根据ProirtiyQueue<Meeting>
和meetingDate
检索即将举行的会议。使用的数据类型分别是java.time.LocalDate和java.time.LocalTime。如何在meetingTime
方法中比较meetingDate
和meetingTime
。
compareTo(Meeting o)
答案 0 :(得分:2)
您可以将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);
}
答案 1 :(得分:1)
根据文档,
<强> Date.compareTo()强>
返回:一个int&lt;如果此Date小于指定的Date,则为0;如果它们相等则为0,并且int>如果此日期更大,则为0。
<强> Time.before()强>
如果此时间小于给定时间,则为
然后你需要这样的东西:
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));
}
此功能将返回: &#34;一个int&lt; 0&#34;如果o在currentMeeting对象之前。 &#34;一个int&gt; 0&#34;如果o在currentMeeting对象之后。