今天工作不是很忙,正好遇到了一个关于排序的问题,研究了一下,正好复习了下Comparable和Comparator这两个接口的使用,和大家分享一下.
Comparable和Comparator这两个接口的区别大多数朋友可能都知道,其实就是一个内部排序和外部排序的问题.一个类实现了Comparable接口,那么这个类的两个对象就可以直接进行比较.我们也可以从实现的CompareTo方法的参数看出来,实现Comparable接口时实现的CompareTo方法只有一个参数,而实现Comparator接口实现的CompareTo方法有两个参数.Comparator其实是在外面强制的以某种规则进行排序.我们可以自己写一个专门用于实现特定排序规则的类然后实现Comparator接口,比如在调用Arrays.sort()方法的时候让它排序的时候使用我们自己的排序类就可以了.关键问题是我们知道了这些在实际应用中怎么用呢?这个问题想了很久,可能是经验并不多的原因,并没有想到在javaEE开发中哪些情况下用以上两种排序更好.不过倒是想到了一种情况,和大家讨论下.
比如我们有一个维护项目,现在客户提出了需求说是要让某些数据按一定得规则排序,比如列表页有几百条"用户"数据,客户要求所有记录要安学历高低进行排序,比如要按照"博士/硕士/本科/专科/高中..."进行排序,我们一般的做法是在数据库中的User表中加一个排序字段或者关联一个排序表.我们为什么让User类实现Comparable接口然后再CompareTo中自己写排序方法来实现排序呢?是因为效率问题么?其实我想如果排序的可能数据不多的话,是可以考虑用Comparable这个方法来实现排序的,而无需动数据库.但是不知道这个想法对不对,还请高手来指点指点!