您的比较逻辑不正确。在非零的情况下,您可以使用Integer.compare(int, int)
和return
进行比较。喜欢的东西,
public int compareTo(Vehicle v) {
int returnValue = Integer.compare(this.parkDate.getYear(),
v.parkDate.getYear());
if (returnValue != 0) {
return returnValue;
}
returnValue = Integer.compare(this.parkDate.getMonth(),
v.parkDate.getMonth());
if (returnValue != 0) {
return returnValue;
}
returnValue = Integer.compare(this.parkDate.getDay(),
v.parkDate.getDay());
if (returnValue != 0) {
return returnValue;
}
returnValue = Integer.compare(this.parkDate.getHours(),
v.parkDate.getHours());
if (returnValue != 0) {
return returnValue;
}
return Integer.compare(this.parkDate.getMinuets(),
v.parkDate.getMinuets());
}
或者,可以缩短上述使用数组和类似
int[] a = { this.parkDate.getYear(), this.parkDate.getMonth(),
this.parkDate.getDay(), this.parkDate.getHours(),
this.parkDate.getMinuets() };
int[] b = { v.parkDate.getYear(), v.parkDate.getMonth(),
v.parkDate.getDay(), v.parkDate.getHours(),
v.parkDate.getMinuets() };
for (int i = 0; i < a.length; i++) {
int rv = Integer.compare(a[i], b[i]);
if (rv != 0) {
return rv;
}
}
return 0;
最后,我相信你想分钟不小步舞。
你真的应该储存日历或Date对象,不是针对每个日期时间部分自己... –
很好的整数,如果一切是相同的,但一分钟时,该语句将返回-1,而不是为1.你需要考虑平等的情况,并且这里有层次结构(如果一个月较少,这与未来一年无关)。你应该使用Java中的可用时间apis(Date,joda time等) – Rogue