Comparable
- Comparable 是排序接口,若一个类实现了该接口,则意味着该类支持排序
- 实现了该接口的类,可以通过 Collections.sort 或 Arrys.sort 方法进行排序。并且该类的对象在作为 TreeMap、TreeSet 的元素时,不需要指定比较器
- 该接口仅包含了一个 compareTo 方法
public interface Comparable<T> {
public int compareTo(T o);
}
-
假设通过 x.compareTo(y) 来比较 x 和 y 大小
- 返回负数意味着 x 比 y 小
- 返回 0 则意味着相等
- 返回 正数 意味着 x 大于 y
Comparator
- Comparator 是比较器接口,假设某个类没有实现 Comparable 接口,但又需要排序,那么可以建立一个该类的比较器来进行排序
- 该接口包含了两个方法,若一个类要实现 Comparator 接口,那么必须实现该 compare 方法,但可以不实现 equals 方法(这是因为任何类都继承自 Object,默认都是已经实现了 equals 方法的)
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
}
-
假设通过 compare(T o1, T o2) 比较 o1、o2 大小
- 返回负数,意味着 o1 比 o2 小
- 返回零,意味着 o1 等于 o2
- 返回正数,意味着 o1 大于 o2
网友评论