Java中Comparable与Comparator的区别

Java中Comparable与Comparator的区别

相同

Comparable和Comparator都是用来实现对象的比较、排序
要想对象比较、排序,都需要实现Comparable或Comparator接口

不同

Comparator位于java.util包下,而Comparable位于java.lang包下
Comparable接口的实现是在类的内部(如 String、Integer已经实现了Comparable接口,自己就可以完成比较大小操作),Comparator接口的实现是在类的外部(可以理解为一个是自已完成比较,一个是外部程序实现比较)

实现Comparable接口要重写compareTo方法, 在compareTo方法里面实现比较

public class Student implements Comparable {
     String name;
     int age
     public int compareTo(Student another) {
          int i = 0;
          i = name.compareTo(another.name); 
          if(i == 0) { 
               return age - another.age;
          } else {
               return i; 
          }
     }
}
  // 这时我们可以直接用 Collections.sort( StudentList ) 对其排序了(只需传入要排序的列表)

实现Comparator需要重写 compare 方法

public class Student{
     String name;
     int age
}
class StudentComparator implements Comparator { 
     public int compare(Student one, Student another) {
          int i = 0;
          i = one.name.compareTo(another.name); 
          if(i == 0) { 
               return one.age - another.age;
          } else {
               return i;          }
     }
}
   Collections.sort( StudentList , new StudentComparator()) 可以对其排序(
   **不仅要传入待排序的列表,还要传入实现了Comparator的类的对象**)

总结

如果比较的方法只要用在一个类中,用该类实现Comparable接口就可以。
如果比较的方法在很多类中需要用到,就自己写个类实现Comparator接口,这样当要比较的时候把实现了Comparator接口的类传过去就可以,省得重复造轮子。这也是为什么Comparator会在java.util包下的原因。
使用Comparator的优点是:1.与实体类分离 2.方便应对多变的排序规则

本文章转载,为此表示感谢
作者:Jeffbond
链接:https://www.jianshu.com/p/fa1a1089d44d
來源:简书

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值