Comparable和Comparator 是什么以及区别 一、Comparable和Comparator

Comparable可以认为是一个内比较器,实现了Comparable接口的类,类的实例与实例直接可以比较,依赖compareTo方法的实现,compareTo方法的返回值就是比较的结果,是int。

比如:new Integer(1).compareTo(newInteger(2))  返回值为-1.

方法参数2比调用者大的则返回-1. 小的为1,等于为0

可以想作两者做减法,1-2小于0为-1

 

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

1、一个对象不支持自己和自己比较(不想实现Comparable接口),但是又想对两个对象进行比较

2、一个对象实现了Comparable接口,但是开发者认为compareTo方法中的比较方式并不是自己想要的那种比较方式

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

1、o1大于o2,返回正整数

2、o1等于o2,返回0

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

其实两者区别看看他俩的方法就懂了,Comparable的类是拿自身和同一个类的比较,只接受一个参数(与同类比较)。而Comparator接收两个参数,可以拿不同类比较。一个是自身有这功能,一个是纯工具。