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

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

    震惊

    震惊

编辑推荐
相同点:都是用于比较,排序的接口。例如对于List对象,如果存储的对象类型不是自定义的,像String
本章目标 掌握Comparable比较接口的使用 了解比较器的基本排序原理 掌握Comparator比较接口的使用 C
1)DBI接口 A,也就是通常所讲的MCU借口,俗称80 system接口。The lcd interface between host proc
4 接口
构ASP.NET程序----接口 看过前一篇博文http://www.cnblogs.com/insus/archive/2013/04/21/3029483.h
抽象类与接口的区别 1. 引言 在我之前的一篇post《抽象类和接口的谁是谁非》中,和同事管伟的讨论,
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存
总结了几种接口的参数: HDMI:传输的是数字信号,非压缩视频信号+音频信号,使用面广,高清电视上
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接
IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代。也就是说:实现了此接
两个月之前准备软考时,简单的从理论上总结了最常用的数据结构和算法,比如:线性表,链表,图。在
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号