当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

comparable接口和comparator接口的区别

发表于: 2015-03-10   作者:dt307912199   来源:转载   浏览:
摘要: list集合在实现排序功能时,需要实现comparable接口,如果list中的对象没有数值字段,那么就不需要实现该接口,因为string类本来就已经实现了comparable接口,因此String类型的值,本身就具有可比性,可以直接比较大小。然而数值类没有实现comparable接口,因此数值类需要比较大小,需要实现comparable接口:    实体类实现compara
list集合在实现排序功能时,需要实现comparable接口,如果list中的对象没有数值字段,那么就不需要实现该接口,因为string类本来就已经实现了comparable接口,因此String类型的值,本身就具有可比性,可以直接比较大小。然而数值类没有实现comparable接口,因此数值类需要比较大小,需要实现comparable接口:
   实体类实现comparable接口,重写父类的comparaTo方法,这样数值类型就实现了排序功能,因此就可以使用Collections.sort(list)就可以实现数值上的排序。
例如:
public class Student implements Comparable<Student>(){
    private String name;
    private Integer age;
   省略get和set方法

   @override
   public int comparaTo(Student s){
     return this.getAge().comparaTo(s.getAge());
   }
}

这样的话,Student对象就实现了数值排序,在外部就可以直接调用Collections.sort(list)直接对age进行排序。
   如果在实体类外面实现list的排序,那么外部类就需要事先Comparator接口,实现compara方法,自定义排序规则,然后使用Collections.sort(list, comparator)实现list集合的排序,其中comparator就是排序规则,
例如:
public class ComparatorStudent implements Comparator<Student>(){
  public static void main(){
     Student s = new Student();
     list.add(s);
      ...
      Comparator comparator = new ComparatorStudent();
      Collections.sort(list, comparator);
      ...
   }

  @override
  public int compara(Student s1, Student s2){
    return s1.getAge().comparaTo(s2.getAge());
  }
}


comparable接口和comparator接口的区别

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号