跳过正文
  1. 文章/
  2. Java/
  3. 常用API/
  4. JDK原生/

7、比较器

·637 字·2 分钟· loading · loading · ·
Java 常用API JDK原生
GradyYoung
作者
GradyYoung
JDK原生 - 点击查看当前系列文章
§ 7、比较器 「 当前文章 」

自然排序:java.lang.Comparable

定制排序:java.util.Comparator

Comparable接口
#

重写compareTo(obj)的规则:

  • 如果当前对象this大于形参对象obj,则返回正整数,
  • 如果当前对象this小于形参对象obj,则返回负整数,
  • 如果当前对象this等于形参对象obj,则返回零。

使用方法
#

//必须在需要排序的类中,实现Comparable接口,并且重写方法compareTo
public class Goods implements Comparable<Goods>{
    private double goodsPrice;
 	@Override
    public int compareTo(Goods o) {
        return Double.compare(this.goodsPrice,o.goodsPrice);
    }
}

Comparator接口
#

当元素的类型没实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序

重写compare(Object o1,Object o2)规则:

  • 比较o1和o2的大小: 如果方法返回正整数,则表示o1大于o2;
  • 如果返回0,表示相等;
  • 返回负整数,表示o1小于o2。

使用方法
#

//在新的类里面,进行Comparator接口的实现并且重写compare方法
public class GoodsesIdUp implements Comparator<Goods> {
    @Override
    public int compare(Goods o1, Goods o2) {
        return Double.compare(o1.getGoodsPrice(),o2.getGoodsPrice());
    }
}

两种排序方式对比
#

  • Comparable是比较的意思,而Comparator是比较器的意思;
  • Comparable是通过重写compareTo方法实现排序的,而Comparator是通过重写compare方法实现排序的;
  • Comparable必须由自定义类内部实现排序方法,而Comparator是外部定义并实现排序的。
JDK原生 - 点击查看当前系列文章
§ 7、比较器 「 当前文章 」