我在添加Java泛型的过程中遇到了这个旧代码,但我不明白这里发生了什么以及需要更改什么。
static void sortByDate( List list) throws Exception
{
class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
RQEntry o11 = (RQEntry) o1;
RQEntry o22 = (RQEntry) o2;
int cc = ((String)o11.getHandledDate() ).compareTo(o22.getHandledDate() );
return (cc < 0 ? -1 : cc > 0 ? 1 : 0);
}
};
Collections.sort(list, new MyComparator());
}
问题1:有人可以解释这种方法如何进行比较吗?
问题2:应传递哪些通用类型参数以符合Java 5标准?
问题3:如何仅通过创建
compare
的新实例来调用MyComparator
方法?更新:
刚刚找到此链接,该链接终于帮助我理解了以下代码:http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
最佳答案
如果您有List<RQEntry>
,则可以使用此比较器对其进行排序。RQEntry
对象将根据其处理日期进行比较。
这就是这里的调用正在执行的操作。Collections.sort(list, new MyComparator());
在幕后,当排序算法需要比较时
两个RQEntry对象,它将调用您的compare
方法
比较器。就这样。