zoukankan      html  css  js  c++  java
  • 五.Comparable和Comparator接口

    相同:都用于对象的大小比较

    不同:

    1.

      Comparable 内部自然排序。(实体类实现)              java.lang.Comparable

      Comparator 外部定制排序。(无法修改实体类时,直接在调用方创建)  java.util.Comparator

    2.

    (1)Comparable是排序接口,若一个类实现了该接口,那么该类的对象就可以进行比较排序。接口中只有一个方法:compareTo(o)方法

       具体的比较规则是按照 compareTo 方法中的规则进行。这种顺序称为 自然顺序

     compareTo 方法的返回值有三种情况:

      • o1 > o2   o1.compareTo(o2) > 0
      • o1 = o2   o1.compareTo(o2) = 0  
      • o1 < o2   o1.compareTo(o2) < 0  

    (2)java中包装类,String类实现了Comparable接口

    (3)排序后,默认按照升序排列

    3.(1)Comparator是排序接口,可以通过实现Comparator来创建一个比较器,然后通过这个比较器对对象进行排序。该接口中有一个方法:compare(o1, o2) 

       称为定制排序

      compare(o1, o2) 方法的返回值有三种情况:

          o1<o2  返回负数

          o1==o2  返回0

          o1>o2  返回正数

     (2)可以将比较器传入:Arrays.sort(),Collections.sort(),TreeSet(),TreeMap()

     (3)Comparator接口只有一个方法,所以可以用Lambda表达式

        Lambda表达式只能用于函数式接口,也就是只有一个抽象方法的接口

     3.

    (1)对于一些普通的数据类型(比如 String, Integer, Double…),它们默认实现了Comparable 接口,实现了 compareTo 方法,我们可以直接使用。

    (2)而对于一些自定义类,它们可能在不同情况下需要实现不同的比较策略,我们可以新创建 Comparator 接口,然后使用特定的 Comparator 实现进行比较。

      这就是 Comparable 和 Comparator 的区别。

  • 相关阅读:
    Server2012R2 ADFS3.0 The same client browser session has made '6' requests in the last '13'seconds
    pig的grunt中shell命令不稳定,能不用尽量不用
    pig脚本的参数传入,多个参数传入
    pig的cogroup详解
    pig的limit无效(返回所有记录)sample有效
    Dynamics CRM2013 任务列表添加自定义按钮
    简述浏览器渲染机制
    如何区分浏览器类型
    使用mock.js生成前端测试数据
    理解Ajax
  • 原文地址:https://www.cnblogs.com/midiyu/p/15173362.html
Copyright © 2011-2022 走看看