Comparable和Comparator是两个用于定义对象之间比较规则的接口。

  一、public interface Comparator<T>

  Comparator接口中有两个方法(不止两个):

  1、int compare(Object obj1,Object obj2)

  obj1>obj2,返回正值;

  obj1=obj2,返回0;

  obj1<obj2,返回负值。

  通过重写compare()方法,可以改变对象排序的方式。

  2、boolean equals(Object obj)

  拿obj和调用该方法的对象按规则比较,相同返回true,不同返回false。

  二、public interface Comparable<T>

  其中只有一个方法:int compareTo(T o)

  当需要让集合对其中的对象进行排序时,可以让对象实现(也必须实现)Comparable接口,这意味着通过compareTo()定义比较规则。

  三、比较

  Comparable接口是一种侵入式的设计,即他必须让被排序的类中实现compareTo()方法。如果一个类是第三方提供的,此时是无法通过Comparable接口进行对象排序操作的。

  为了解决这一问题,必须使用比较器Comparator。

  集合类可以通过比较器来精确定义按照何种规则排序,Comparator可以让代码不入侵类的内部定义排序规则。

  显然,比较器Comparator比Comparable接口更加灵活,不入侵类,更符合单一职责的设计哲学。

  当有了新的比较方式,只需要修改比较规则类,即实现Comparator接口的类。

比较接口:Comparable和Comparator的更多相关文章

  1. java 中的2个接口 Comparable和Comparator

    像Integer.String这些类型的数据都是已经实现Comparable接口的,所以对这些类型可以直接通过Arrays.sort(...)和Collections.sort(...)方法进行排序. ...

  2. Java中Comparable与Comparator的区别

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

  3. Comparable与Comparator,java中的排序与比较

    1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较. 排序:在集合类中,对集合类中的实体进行排序.排序基于的算法基于实体类提供的比较函数. 基本型别都提供了默认的比较算法,如s ...

  4. 对象大小对比之Comparable与Comparator

    一 概述 1.Comparable与Comparator使用背景 数值型数据(byte int short long float double)天生可对比大小,可排序,String实现了Compara ...

  5. Java中Comparable和Comparator接口区别分析

    Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...

  6. 十三、实现Comparable接口和new Comparator<T>(){ }排序的实现过程

    参考:https://www.cnblogs.com/igoodful/p/9517784.html Collections有两种比较规则方式,第一种是使用自身的比较规则: 该类必须实现Compara ...

  7. JDK设计模式之——策略模式(Comparable和Comparator接口)

    策略模式:其实就是java的多态...父类引用指向子类对象. 使用策略模式,改善排序算法上文中需要排序的是一个数组 让他可以对任何类型的数组进行排序 1.利用 接口 Comparable<T&g ...

  8. Comparable和Comparator接口是干什么的?列出它们的区别。

    Comparable和Comparator接口是干什么的?列出它们的区别. Java提供了只包含一个compareTo()方法的Comparable接口.这个方法可以个给两个对象排序.具体来说,它返回 ...

  9. 比较接口(Comparable ,Comparator)及流的聚合操作

    Comparable 及 Comparator 的区别 Comparable 一个内比较器,类可以和自己比较 compareTo() 自然比较方法 public interface Comparabl ...

随机推荐

  1. 用python绘制趋势图

    import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import date ...

  2. 【黑马JavaSE】1.2.算术\赋值\比较\逻辑\三元运算符、方法入门、JShell编译器

    文章目录 1_1_6_05_算术运算符_四则与取模运算 1_1_6_06_算术运算符_加号的多种 1_1_6_07_算术运算符_自增自减运算 1_1_6_08_赋值运算符 这里挺关键的,为什么一个by ...

  3. ccf 201612-3 权限查询

     ccf 201612-3 权限查询 解题思路: 建立一个二维矩阵存储权限和角色 还差30分emmm #include<iostream> #include<cstring> ...

  4. 实用的60个CSS代码片段[下]

    31.有趣的& .amp { font-family: Baskerville, 'Goudy Old Style', Palatino, 'Book Antiqua', serif; fon ...

  5. Ceph 的用户管理与认证

    目录 文章目录 目录 前言 Ceph 的用户管理 用户管理常规操作 CephX 认证系统 身份认证原理 使用 ceph-authtool 进行密钥环管理 注意事项 前言 常规的身份认证系统无非三点: ...

  6. linux 基础 文件操作

    cat -A /etc/passwdnl -ba passwd cat -A man_db.conf more man_db.conf less man_db.conf head -n 5 /var/ ...

  7. mongod 对指定数据库创建用户

    https://blog.51cto.com/wzlinux/2153062?source=dra 1.先在admin库中创建管理员用户与密码 [root@mbasic ~]# mongo Mongo ...

  8. PGI 遇到的坑

    以下记录为本人在使用PGI社区版编译器遇到的问题,包含两类问题 1,PGI编译器本身存在你的bug. 2,在其他编译器编译运行没问题,在PGI中出现问题. 版本(18.11社区版) 1,(bug)内置 ...

  9. 2019.11.06 【每天学点SAP小知识】Day1 - ABAP 7.40新语法

    最近看同事使用ABAP新语法贼溜,省了好多的功夫,还在使用老语法的我眼红了. 所以就自己补一补7.40之后语法,能够让自己写代码更顺畅吧. 今天学习内联申明 inline 意思是:当编译器发现某段代码 ...

  10. MyBatis 简单入门

    添加maven 依赖 <dependencies> <dependency> <groupId>org.mybatis</groupId> <ar ...