首页 > 编程语言 > 详细

Java中Comparable与Comparator的区别

时间:2017-04-08 19:36:00      阅读:192      评论:0      收藏:0      [点我收藏+]

相同

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

区别

  • 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包下的原因。

Java中Comparable与Comparator的区别

原文:http://www.cnblogs.com/zhengxingpeng/p/6682656.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!