以下为 Jean 学习笔记和习题整理,供学习和参考

# Comparable

只有一个方法:

public int compareTo(T o);

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

  • 1、比较者 (调用 compareTo 方法者) 大于被比较者(也就是 compareTo 方法接受对象),那么返回 1
  • 2、比较者等于被比较者,那么返回 0
  • 3、比较者小于被比较者,那么返回 -1

Comparable 可以认为是一个内比较器,很多类都会实现这个接口以提供对该类对象之间比较的默认实现;比如 String,Integer,Float,Double 类都实现了 Comparable 接口。String 可以排序是 String 实现了 Comparable 接口

实现一个类如果需要实现比较大小,那么继承 Comparable 接口,泛型参数 T 是比较谁就写谁:

public class Domain implements Comparable<Domain> {

Comparable 接口就是用于给类提供默认比较功能的。

# Comparator

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

  • 一个对象不支持自己和自己比较(没有实现 Comparable 接口),但是又想对两个对象进行比较;一般同类型对象比较很少实现这个接口。
  • 一个对象实现了 Comparable 接口,但是开发者认为 compareTo 方法中的比较方式并不是自己想要的那种比较方式。Comparator 接口更多是实现这个功能。对特定比较需求提供支持。

int compare(T o1, T o2);

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

  • 1、o1 大于 o2,返回 1
  • 2、o1 等于 o2,返回 0
  • 3、o1 小于 o3,返回 - 1

问题一:comparable 与 comparator 有什么区别?

更新于

请我喝[茶]~( ̄▽ ̄)~*

Jean 微信支付

微信支付

Jean 支付宝

支付宝

Jean 贝宝

贝宝