Comparable与Comparator

      今天工作不是很忙,正好遇到了一个关于排序的问题,研究了一下,正好复习了下Comparable和Comparator这两个接口的使用,和大家分享一下.

      Comparable和Comparator这两个接口的区别大多数朋友可能都知道,其实就是一个内部排序和外部排序的问题.一个类实现了Comparable接口,那么这个类的两个对象就可以直接进行比较.我们也可以从实现的CompareTo方法的参数看出来,实现Comparable接口时实现的CompareTo方法只有一个参数,而实现Comparator接口实现的CompareTo方法有两个参数.Comparator其实是在外面强制的以某种规则进行排序.我们可以自己写一个专门用于实现特定排序规则的类然后实现Comparator接口,比如在调用Arrays.sort()方法的时候让它排序的时候使用我们自己的排序类就可以了.关键问题是我们知道了这些在实际应用中怎么用呢?这个问题想了很久,可能是经验并不多的原因,并没有想到在javaEE开发中哪些情况下用以上两种排序更好.不过倒是想到了一种情况,和大家讨论下.

     比如我们有一个维护项目,现在客户提出了需求说是要让某些数据按一定得规则排序,比如列表页有几百条"用户"数据,客户要求所有记录要安学历高低进行排序,比如要按照"博士/硕士/本科/专科/高中..."进行排序,我们一般的做法是在数据库中的User表中加一个排序字段或者关联一个排序表.我们为什么让User类实现Comparable接口然后再CompareTo中自己写排序方法来实现排序呢?是因为效率问题么?其实我想如果排序的可能数据不多的话,是可以考虑用Comparable这个方法来实现排序的,而无需动数据库.但是不知道这个想法对不对,还请高手来指点指点!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值