加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java_Comparable,Comparator两接口区别

发布时间:2020-12-14 06:26:24 所属栏目:Java 来源:网络整理
导读:h3 align="left"span style="background-color: #ffffff; color: #3366ff" a href="https://www.cnblogs.com/szlbm/p/5504634.html"gt;span style="background-color: #ffffff; color: #3366ff"Comparable和Comparator的区别 根本区别 1.Comparable是一个内

<h3 align="left"><span style="background-color: #ffffff; color: #3366ff"><a href="https://www.cnblogs.com/szlbm/p/5504634.html"&gt;<span style="background-color: #ffffff; color: #3366ff">Comparable和Comparator的区别

根本区别

  1.Comparable是一个内比较器,Comparator是一个外比较器

    封装的包不同

      java.util.Comparator

      java.lang.Comparable

    调用方式不同:

      Comparable:实体类实现该接口,一个实体类调用compareTo方法与另一个实体类对象进行比较,obj.compareTo(obj);

      Comparator:调用实现类的compare(obj,obj)方法,进行比较

      Comparable 的方法compareTo(obj)写在比较的实体类中

      Comparable 的方法compare(obj,obj)可以是一个外部类

拓展区别

  2.Comparable的耦合性要高一些;

    Comparable接口 适合于可以直接进行比较的对象,例如:int,Date

    Comparator接口 适合于不能进行直接比较的对象,即自己编写比较方法算法

    几乎所有自己可以和自己比较的对象都实现了Comparable接口

共同点

    两个接口的方法返回值都是int类型,并且正数大于,负数小于,0为等于

引用:

Comparator可以认为是是一个外比较器,个人认为有两种情况可以使用实现Comparator接口的方式:

1<span style="color: #000000">、一个对象不支持自己和自己比较(没有实现Comparable接口),但是又想对两个对象进行比较

2<span style="color: #000000">、一个对象实现了Comparable接口,但是开发者认为compareTo方法中的比较方式并不是自己想要的那种比较方式

Comparator接口里面有一个compare方法,方法有两个参数T o1和T o2,是泛型的表示方式,分别表示待比较的两个对象,方法返回值和Comparable接口一样是int,有三种情况:

1<span style="color: #000000">、o1大于o2,返回正整数

2<span style="color: #000000">、o1等于o2,返回0

3、o1小于o3,返回负整数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读