【发布时间】:2011-02-13 10:26:42
【问题描述】:
我有两个类 - Task(实现 Comparable)和 DeadlinedTask(DeadlinedTask 扩展 Task)。对于他们每个人,我都编写了一个重载的 compareTo 函数(每个都有 compareTo(Task) 和 compareTo(DeadlinedTask))。
我的想法是我可以按类别对普通任务进行排序,并按截止日期对 DeadlinedTasks 进行排序,但我还希望所有 DeadlinedTasks 都排在任务之上。
当我在仅包含任务(没有 DeadlinedTasks)的列表上调用 Collections.sort(myListOfTasks) 时,一切都像一个魅力。 但是,当我有一个 Tasks 和 DeadlinedTasks 的列表时,对象会更改顺序,但它们没有完全排序。
我尝试在类间比较中返回 1 以外的数字(1、1000、1000000 都做了同样的事情)。有没有办法通过 compareTo 和 Collections.sort 来做到这一点,我可以使用不同的 java 功能,还是我必须编写自己的搜索函数(作为比较器?)?
任务比较方法:
public int compareTo(Task other){
if(this.GetCategory().compareTo(other.GetCategory())==0)
return this.GetName().compareTo(other.GetName());
else
return this.GetCategory().compareTo(other.GetCategory());
}
public int compareTo(DeadlinedTask other){
return 1;
}
DeadlinedTask compareTo 方法:
public int compareTo(Task other){
return -1;
}
public int compareTo(DeadlinedTask other){
if(this.GetDeadline().compareTo(other.GetDeadline())==0)
return this.GetName().compareTo(other.GetName());
else
return this.GetDeadline().compareTo(other.GetDeadline());
}
感谢您的帮助
【问题讨论】: