前言
本文章帮助大家对Comparable
接口的理解。
一、概述
Comparable
意为可比较的。顾名思义,为让对象可以与同类对象进行比较大小,建议实现此接口。
它使其实现类对象具有比较的功能,属于类内部的比较功能,同样有比较功能的有Comparator
(比较器)接口,但后者是从类外部提供的功能。参考Comparator
接口。
二、源码理解
包
package java.lang;
使用Comparable
接口时,此包自动引入。
Comparable接口
public interface Comparable<T> { /*...*/ }
使用接口时传入泛型T
,为可比较对象的元素的类型。
注意:集合元素的排序需要利用到元素的比较功能。比较需要有“相反性”(a > b
⇔
\Leftrightarrow
⇔b < a
)、“传递性”(a > b > c
⇒
\Rightarrow
⇒a > c
)等。
Comparable方法
compareTo
public int compareTo(T o);
与o
比较,若小于o
,返回负数;若等于o
,返回0;若大于o
,返回正数。若o
为空,抛出NullPointerException
异常;若因o
的类型而不能比较,抛出ClassCastException
异常。
强烈建议a.compareTo(b) == 0
和a.equals(b)
保持一致,若不一致,请标明它们不一致。参考Object.equals
方法。
总结
新人源码理解,望大家多多指点。